J'ai construit une classe avec un String
champ. Ensuite, j'ai créé deux objets et je dois les comparer à l'aide de l' ==
opérateur et .equals()
aussi. Voici ce que j'ai fait:
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));
}
}
Après la compilation, il affiche deux fois faux en conséquence. Pourquoi est-il faux si les deux objets ont les mêmes champs - "test"?
equals
etequals2
: chaque fois que vous avez quelque chose de la forme,if(a) { return true; } else { return false; }
vous devriez probablement simplement écrirereturn a
.