Junior — Middle
Dans quelles situations doit-on redéfinir la méthode equals en Java pour une comparaison correcte des objets?
sobes.tech IA
Réponse de l'IA
La méthode equals en Java doit être redéfinie lorsque vous souhaitez définir vos propres critères d'égalité des objets de votre classe, différents de la comparaison standard par référence (qui est implémentée dans Object).
Ceci est particulièrement important si les objets de votre classe sont considérés comme égaux logiquement lorsque certains champs correspondent, par exemple, dans la classe Person, les objets sont considérés comme égaux si le nom et la date de naissance correspondent.
Redéfinir equals est nécessaire pour:
- Comparer correctement les objets par contenu.
- Assurer le bon fonctionnement des collections telles que HashSet ou HashMap, qui utilisent equals pour déterminer l'unicité des éléments.
Lors de la redéfinition de equals, il est également important de redéfinir hashCode pour respecter le contrat entre ces méthodes.
Exemple de redéfinition de equals et hashCode:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}
@Override
public int hashCode() {
return Objects.hash(name, birthDate);
}