Remplacer la méthode Equals() de Java : un piège à éviter
En Java, la méthode Equals() joue un rôle crucial dans la comparaison d'objets . Remplacer cette méthode peut être semé d'embûches si cela n'est pas fait correctement.
À titre d'exemple, considérons le scénario décrit dans lequel le remplacement de equals() par une méthode qui prend un paramètre Book entraînait un comportement inattendu. En effet, la méthode equals() inhérente à Java est définie pour prendre un paramètre Object, et non un type spécifique comme Book.
La classe ArrayList, qui a été utilisée dans l'exemple, utilise des méthodes equals() remplacées pour déterminer l'égalité. entre les objets (par exemple, contain() et equals()). Cependant, cela ne fonctionne pas avec les méthodes equals() surchargées (c'est-à-dire celles qui prennent des paramètres de types spécifiques).
Corriger le remplacement ou la surcharge
Dans ce scénario, public boolean est égal à( Book other) est une surcharge, et non une substitution, car il a un type de paramètre différent de celui de la méthode equals() basée sur les objets dans Objet.
Meilleures pratiques pour remplacer equals()
Pour éviter de tels problèmes, il est recommandé de suivre ces bonnes pratiques lors du remplacement de equals() :
@Override public boolean equals(Object other){ if (other == null) return false; if (other == this) return true; if (!(other instanceof MyClass)) return false; MyClass otherMyClass = (MyClass)other; ...test other properties here... }
Ce modèle fournit une vérification complète des valeurs null, self -référence et compatibilité des types d'instances, garantissant une fonctionnalité appropriée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!