Heim  >  Artikel  >  Java  >  So vergleichen Sie Objekte in Java korrekt auf Gleichheit: Überschreiben und Überschreiben der Methode equal(Object).

So vergleichen Sie Objekte in Java korrekt auf Gleichheit: Überschreiben und Überschreiben der Methode equal(Object).

WBOY
WBOYOriginal
2024-01-11 17:18:05512Durchsuche

So vergleichen Sie Objekte in Java korrekt auf Gleichheit: Überschreiben und Überschreiben der Methode equal(Object).

Die Methode equal(Object) in Java ist eine Methode, mit der zwei Objekte auf Gleichheit verglichen werden. In Java-Klassen wird die Methode equal standardmäßig von der Object-Klasse geerbt und vergleicht einfach die Referenzwerte zweier Objekte. Allerdings müssen wir Objekte häufig auf benutzerdefinierte Weise auf Gleichheit vergleichen, was das Überschreiben der Methode equal in einer Unterklasse erfordert.

Um Objekte korrekt auf Gleichheit zu vergleichen, müssen wir mehrere Regeln befolgen. Erstens muss die Methode „equals“ der Reflexivität genügen, was bedeutet, dass ein Objekt sich selbst gleich sein muss. Zweitens muss die Methode „equals“ der Symmetrie genügen, d. h. wenn Objekt A gleich Objekt B ist, müssen auch Objekt B und Objekt A gleich sein. Schließlich muss die Methode „equals“ die Transitivität erfüllen. Das heißt, wenn Objekt A gleich Objekt B und Objekt B gleich Objekt C ist, müssen auch Objekt A und Objekt C gleich sein.

Um die Gleichheitsmethode zu überschreiben und zu überschreiben, müssen wir die folgenden wichtigen Punkte berücksichtigen.

Zuerst müssen wir sicherstellen, dass die Signatur der Equals-Methode mit der Equals-Methode in der Object-Klasse übereinstimmt. Die Signatur der Methode equal sollte lauten: public boolean equal(Object obj). Das bedeutet, dass wir einen Parameter vom Typ Object akzeptieren und einen booleschen Wert zurückgeben müssen.

Zweitens müssen wir eine Typprüfung durchführen, um sicherzustellen, dass der übergebene Parameter ein Objekt ist, das dem aktuellen Objekttyp entspricht. Dies kann durch die Verwendung des Schlüsselworts „instanceof“ erreicht werden. Wenn die Typprüfung fehlschlägt, können wir direkt false zurückgeben.

Dann müssen wir die eingehenden Parameter in den Typ des aktuellen Objekts umwandeln und die Gleichheit verschiedener Eigenschaften vergleichen. In diesem Prozess müssen wir der Implementierungskonvention der Methode „equals“ von Java folgen, d. h. die Methode „equals“ verwenden, um die Eigenschaften von Objekten zu vergleichen, anstatt den Operator „==“ zu verwenden.

Beim Vergleich von Attributwerten müssen wir den Fall von Nullreferenzen berücksichtigen. Wenn der Eigenschaftswert null ist, können wir zum Vergleich die Methode equal der Objects-Klasse verwenden, die die Nullreferenzsituation korrekt behandelt. Darüber hinaus können wir für grundlegende Typattribute direkt den Operator „==“ zum Vergleich verwenden.

Abschließend müssen wir sicherstellen, dass die Methode „equals“ die Methode „hashCode“ überschreibt. Wenn zwei Objekte gleich sind, müssen ihre HashCode-Methoden gemäß der Java-Spezifikation denselben Wert zurückgeben. Dadurch soll sichergestellt werden, dass Objekte bei Verwendung von Datenstrukturen wie Hash-Tabellen korrekt gespeichert und abgerufen werden.

Hier ist ein Beispiel, das zeigt, wie die Methode „equals“ überschrieben wird:

public class Person {
    private String name;
    private int age;
  
    // 省略构造方法、getter和setter方法
  
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof Person)) {
            return false;
        }
        Person other = (Person) obj;
        return Objects.equals(this.name, other.name) && this.age == other.age;
    }
  
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
  
    // 省略其他方法
}

Im obigen Beispiel haben wir die Methode „equals“ überschrieben, um die Namens- und Alterseigenschaften des Person-Objekts auf Gleichheit zu vergleichen. Gleichzeitig haben wir auch die Methode hashCode überschrieben, um sicherzustellen, dass gleiche Objekte denselben Hash-Code haben.

Zusammenfassend lässt sich sagen, dass wir durch korrektes Umschreiben und Überschreiben der Methode „equals“ sicherstellen können, dass wir beim Vergleich von Objekten auf Gleichheit die richtigen Ergebnisse erhalten. Es ist zu beachten, dass beim Umschreiben der Methode „equals“ Eigenschaften wie Reflexivität, Symmetrie und Transitivität erfüllt werden müssen und dass auch die Methode „hashCode“ neu geschrieben werden muss. Indem wir diese Regeln befolgen, können wir sicherstellen, dass wir bei Gleichheitsvergleichen von Objekten die richtigen Ergebnisse erhalten.

Das obige ist der detaillierte Inhalt vonSo vergleichen Sie Objekte in Java korrekt auf Gleichheit: Überschreiben und Überschreiben der Methode equal(Object).. 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