मैंने एक String
क्षेत्र के साथ एक वर्ग का निर्माण किया । फिर मैंने दो ऑब्जेक्ट बनाए और मुझे उन्हें ==
ऑपरेटर और .equals()
बहुत सारे का उपयोग करके तुलना करनी होगी । यहाँ मैंने क्या किया है:
public class MyClass {
String a;
public MyClass(String ab) {
a = ab;
}
public boolean equals(Object object2) {
if(a == object2) {
return true;
}
else return false;
}
public boolean equals2(Object object2) {
if(a.equals(object2)) {
return true;
}
else return false;
}
public static void main(String[] args) {
MyClass object1 = new MyClass("test");
MyClass object2 = new MyClass("test");
object1.equals(object2);
System.out.println(object1.equals(object2));
object1.equals2(object2);
System.out.println(object1.equals2(object2));
}
}
संकलन के बाद यह परिणामस्वरूप दो गुना झूठा दिखाता है। यदि दो वस्तुओं का एक ही क्षेत्र - "परीक्षण" है तो यह गलत क्यों है?
equals
औरequals2
: किसी भी समय आपके पास कुछ ऐसा रूप है जिसेif(a) { return true; } else { return false; }
आपको शायद लिखना चाहिएreturn a
।