Heim >Java >javaLernprogramm >Warum schlägt das Überschreiben meiner Java-Methode „equals()' bei Sammlungen fehl?

Warum schlägt das Überschreiben meiner Java-Methode „equals()' bei Sammlungen fehl?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 15:12:10600Durchsuche

Why Does My Java `equals()` Method Override Fail with Collections?

Überschreibung der Equals()-Methode in Java: Ein verwirrendes Problem wurde gelöst

Beim Überschreiben der Methode equal() in Java können unerwartete Herausforderungen auftreten. In diesem Artikel geht es um einen besonderen Fall, bei dem die Methode eine Fehlfunktion hatte, was zu einem frustrierenden Debugging-Erlebnis führte.

Kurz gesagt, das Problem war auf eine unsachgemäße Überschreibung der Methode equal() zurückzuführen. Konkret wurde die Methode mit einem Parameter vom Typ Book anstelle von Object definiert, wie es die von der Object-Klasse geerbte Methode erfordert.

Das Java Collections Framework, das häufig zur Verarbeitung von Objektsammlungen verwendet wird, verwendet die überschriebenen Equals( ) Methode zur Bestimmung der Gleichheit. Im bereitgestellten Codebeispiel war die überladene equal()-Methode mit dem Book-Parameter jedoch nicht mit diesem Framework kompatibel. Infolgedessen scheiterten Gleichheitsvergleiche innerhalb der Sammlung aus unerklärlichen Gründen.

Um diese Verwirrung zu beheben, muss die Methode equal() wie folgt korrekt überschrieben werden:

@Override
public boolean equals(Object other) {
    if (other == null) return false;
    if (other == this) return true;
    if (!(other instanceof Book)) return false;
    Book otherBook = (Book) other;
    ...test other properties here...
}

Dieses Codefragment überschreibt die Methode „equals“. ()-Methode aus der Object-Klasse mit einem Parameter vom Typ Object. Darüber hinaus bietet die Annotation @Override eine Prüfung zur Kompilierungszeit, um sicherzustellen, dass die Methode eine Superklassenmethode korrekt überschreibt.

Durch die Behebung dieses subtilen, aber entscheidenden Unterschieds zwischen Überladung und Überschreibung können Programmierer ähnliche Fallstricke vermeiden und eine genaue Gleichheit aufrechterhalten Vergleiche in ihrem Java-Code.

Das obige ist der detaillierte Inhalt vonWarum schlägt das Überschreiben meiner Java-Methode „equals()' bei Sammlungen fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn