L'interface du comparateur possède son propre equals()
méthode. Toute classe obtiendra equals()
par défaut par le biais de la classe d'objets. Quelle est la nécessité d'avoir equals()
à l'intérieur d'une interface ?
Réponses
Trop de publicités?Comparator interface have their own equals() method
Tout d'abord, il doit être clair que chaque fois que vous implémentez l'interface Comparable, vous devez fournir à votre programme la possibilité de décider si des objets sont égaux, inférieurs ou supérieurs.
I am quite confuse about have equals() inside Comparator. Any class will get equals() by default through Object class.
L'implémentation de la méthode equals() que nous avons héritée de la classe Object vérifie uniquement si les deux références pointent vers le même objet ou non. Elle n'applique aucune comparaison. C'est vous qui fournirez dans votre classe (ou éventuellement dans votre interface) les critères d'égalité des objets.
Then what is need to have equals() method inside an interface?
Il est évident que chaque fois que vous implémentez des objets plus petits ou plus grands que, vous devez implémenter des objets égaux. Ainsi, plutôt que de vous fier à la méthode par défaut Object equals(), vous devez fournir votre propre logique pour vérifier l'égalité.
En equals()
méthode en Comparator
est fourni pour forcer un utilisateur qui met en œuvre le Comparator
pour mettre en œuvre l'interface equals()
avec quelques règles et contraintes supplémentaires en plus de celles déjà appliquées aux equals()
de Object
.
La règle supplémentaire est la suivante :
Cette méthode doit obéir au contrat général de Object.equals(Object) . En outre, cette méthode ne peut renvoyer un résultat positif que si l'objet spécifié est également un comparateur et qu'il impose le même ordre que ce comparateur. Ainsi, comp1.equals(comp2) i sgn(comp1.compare(o1, o2))==sgn(comp2.compare(o1, o2)) f référence d'objet o1 y o2 .
- Réponses précédentes
- Plus de réponses