616 Stimmen

Welche Aspekte sollten beim Überschreiben von equals und hashCode in Java berücksichtigt werden?

Welche Probleme / Fallstricke sind bei der Aufhebung zu beachten? equals y hashCode ?

6voto

Darren Greaves Punkte 3286

Ein Problem, das ich gefunden habe, ist, wenn zwei Objekte Verweise auf einander enthalten (ein Beispiel ist eine Eltern-Kind-Beziehung mit einer Komfortmethode auf dem Elternteil, um alle Kinder zu erhalten).
Diese Art von Dingen sind zum Beispiel bei Hibernate-Mappings ziemlich häufig.

Wenn Sie beide Enden der Beziehung in Ihre HashCode- oder Gleichheits-Tests einbeziehen, ist es möglich, in eine rekursive Schleife zu geraten, die mit einer StackOverflowException endet.
Die einfachste Lösung ist, die getChildren-Sammlung nicht in die Methoden aufzunehmen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X