Bonjour,

J’ai une classe "Ville". J’ai défini à la main moi-même tout seul la méthode "equal". Voila le résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
public boolean equal(Ville o) {
	if(this.nomVille!=o.nomVille) return false;
	if(this.nbHabitants!=o.nbHabitants) return false;
	if(this.nomPays!=o.nomPays) return false;
	return true;
}
J’ai ensuite demandé à Eclipse de définir la méthode automatiquement. Voilà le résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public boolean equals(Object obj) {
	if (this == obj) return true;
	if (obj == null) return false;
	if (getClass() != obj.getClass()) return false;
 
	Ville other = (Ville) obj;
	if (nbHabitants != other.nbHabitants) return false;
	if (nomPays == null) {
		if (other.nomPays != null) return false;
	} else {
                if (!nomPays.equals(other.nomPays)) return false;
	}
	if (nomVille == null) {
		if (other.nomVille != null) return false;
	} else {
                if (!nomVille.equals(other.nomVille)) return false;
	}
	return true;
}
J’ai un peu du mal à comprendre...

Ligne 3 : obj==null : pourquoi retourner false ? Si mon objet this est null, et que obj est null, alors je devrais retourner true, non ?

Christophe