Le chapitre 2 était l'essence même de la création et de la disparition d'objets. Le chapitre 3 concerne la classe "Object".
-Object est principalement conçu pour être étendu même s'il s'agit d'une classe concrète · Toutes les méthodes non finales (equals, hashCode, toString, clone, finalize) sont conçues pour être remplacées, elles ont donc un contrat général explicite. -Les classes de dépassement ne fonctionneront pas correctement à moins qu'elles ne soient conformes au contrat général
Remplacer la méthode equals est facile, mais c'est souvent la mauvaise façon de la remplacer, il est donc préférable de ne pas la remplacer si l'une des conditions suivantes est remplie:
· Lorsque les instances individuelles de la classe sont intrinsèquement uniques
· Si vous ne souhaitez pas savoir si la classe fournit un contrôle "d'égalité logique"
· Si la superclasse a déjà remplacé égal à égal et que le comportement de la superclasse est approprié pour cette classe
· Si la classe est privée ou package private et que vous êtes certain que sa méthode equals ne sera jamais appelée
Ce qui suit est le contrat général pour la méthode égale. Si cela n'est pas suivi, le programme se comportera de manière irrégulière ou plantera.
L'implémentation de la méthode equals implémente une relation d'équivalence. C'est, Réflexif: x.equals (x) doit retourner true pour toute valeur de référence non nulle x · Symétrique: x.equals (y) doit renvoyer vrai uniquement si y.equals (x) renvoie vrai pour toutes les valeurs de référence non nulles x et y. Transitive: pour toute valeur de référence non nulle x, y, z, si x.equals (y) et y.equals (z) retournent true, alors x.equals (z) Doit retourner vrai · Cohérent: pour toutes les valeurs de référence non nulles x et y, plusieurs appels à x.equals (y) sont cohérents d'un bout à l'autre, sauf si les informations utilisées pour comparer sont égales à l'objet ont changé. Doit renvoyer true ou renvoyer systématiquement false
[Lire Java effectif] Chapitre 3 Rubrique 9 "Lors de la substitution d'égaux, toujours remplacer hashCode" https://qiita.com/Natsukii/items/ac195b5542ba3348ed29
Recommended Posts