Kapitel 2 war die Essenz der Objekterstellung und des Verschwindens. Kapitel 3 befasst sich mit der Klasse "Objekt".
-Object wurde hauptsächlich entwickelt, um erweitert zu werden, obwohl es sich um eine konkrete Klasse handelt · Alle nicht endgültigen Methoden (equals, hashCode, toString, clone, finalize) sind so konzipiert, dass sie überschrieben werden, sodass sie einen expliziten allgemeinen Vertrag haben.
Das Überschreiben der equals-Methode ist einfach, aber es ist oft die falsche Methode, sie zu überschreiben. Es ist daher am besten, sie nicht zu überschreiben, wenn eine der folgenden Bedingungen erfüllt ist:
· Wenn einzelne Instanzen der Klasse von Natur aus eindeutig sind
· Wenn Sie nicht daran interessiert sind, ob die Klasse eine Prüfung der "logischen Gleichheit" bietet
· Wenn die Oberklasse bereits gleich überschrieben hat und das Verhalten der Oberklasse für diese Klasse geeignet ist
· Wenn die Klasse privat oder paketprivat ist und Sie sicher sind, dass ihre Methode equals niemals aufgerufen wird
Das Folgende ist der allgemeine Vertrag für die Gleichheitsmethode. Wenn dies nicht befolgt wird, verhält sich das Programm unregelmäßig oder stürzt ab.
Die Implementierung der Methode equals implementiert eine Äquivalenzbeziehung. Das ist, Reflexiv: x.equals (x) muss für jeden Nicht-Null-Referenzwert x true zurückgeben · Symmetrisch: x.equals (y) darf nur dann true zurückgeben, wenn y.equals (x) für alle Nicht-Null-Referenzwerte x und y true zurückgibt. Transitiv: Für jeden Nicht-Null-Referenzwert x, y, z, wenn x.equals (y) und y.equals (z) true zurückgeben, dann x.equals (z) Muss true zurückgeben · Konsistent: Für alle Nicht-Null-Referenzwerte x und y sind mehrere Aufrufe von x.equals (y) durchgehend konsistent, es sei denn, die zum Vergleichen verwendeten Informationen entsprechen dem Objekt. Muss entweder true oder konsistent false zurückgeben
[Read Effective Java] Kapitel 3 Punkt 9 "Wenn Sie equals überschreiben, überschreiben Sie immer hashCode" https://qiita.com/Natsukii/items/ac195b5542ba3348ed29
Recommended Posts