méthode equals() explications
J'ai copier/coller la méthode equals() de la FAQ JAVA et je ne comprends pas bien quelque chose.
le premier "if" de la méthode vérifie si la référence des 2 objets et si elle sont égales et return true...mais le fait de retourner true nous fait sortir de la méthode il me semble
et donc on n'a vérifié uniquement les références... quand est-il de l'objet lui même avec ses attributs etc ...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
class TestClass {
private int attribut1;
private String attribut2;
private boolean visible; // Attribut non-représentatif et donc ignoré
@Override
public boolean equals(Object obj) {
// Vérification de l'égalité des références
if (obj==this) {
return true;
}
// Vérification du type du paramètre
if (obj instanceof TestClass) {
// Vérification des valeurs des attributs
TestClass other = (TestClass) obj;
// Pour les attributs de type primitif
// on compare directement les valeurs :
if (this.attribut1 != other.attribut1) {
return false; // les attributs sont différents
}
// Pour les attributs de type objets
// on compare dans un premier temps les références
if (this.attribut2 != other.attribut2) {
// Si les références ne sont pas identiques
// on doit en plus utiliser equals()
if (this.attribut2 == null || !this.attribut2.equals(other.attribut2)) {
return false; // les attributs sont différents
}
}
// Si on arrive ici c'est que tous les attributs sont égaux :
return true;
}
return false;
}
} |