Heim >Java >javaLernprogramm >Wie überschreibe ich die Methode equal() in Java richtig?

Wie überschreibe ich die Methode equal() in Java richtig?

DDD
DDDOriginal
2024-12-20 19:00:18901Durchsuche

How to Properly Override the equals() Method in Java?

So überschreiben Sie die Methode equal() in Java

Das Überschreiben der Methode equal() ist für die Anpassung des Gleichheitsvergleichsverhaltens für Benutzer unerlässlich Objekte in Java. Hier ist eine umfassende Anleitung, die Ihnen dabei hilft, dies effektiv zu tun:

Das Problem:

Im angegebenen Snippet ist beim Versuch, Altersfelder mit Gleichheit zu vergleichen( ), da es für String-Objekte konzipiert ist. Ganzzahlige Werte erfordern die Verwendung des ==-Operators.

Die Lösung:

Um diesen Fehler zu beheben, verwenden Sie den ==-Operator, um primitive Datentypen wie das Alter zu vergleichen. Der geänderte Codeausschnitt lautet wie folgt:

public boolean equals(People other){
    boolean result;
    if((other == null) || (getClass() != other.getClass())){
        result = false;
    } // end if
    else{
        People otherPeople = (People)other;
        result = name.equals(other.name) && age == other.age;
    } // end else

    return result;
} // end equals

Zusätzliche Erklärung:

1. Überschreibender Prozess:

  • Um equal() zu überschreiben, deklarieren Sie es mit der Annotation @Override.
  • Die Methode sollte einen booleschen Wert zurückgeben, der Gleichheit angibt, und ein Argument desselben übernehmen Geben Sie als Klasse ein.

2. Nullprüfung:

  • Prüfen Sie immer auf Null mit obj == null, um NullPointerExceptions zu vermeiden.

3. Klassenvergleich:

  • Überprüfen Sie mithilfe von getClass() != other.getClass(), ob das zu vergleichende Objekt derselben Klasse angehört.

4. Benutzerdefinierte Vergleichslogik:

  • Definieren Sie die benutzerdefinierte Vergleichslogik innerhalb des else-Blocks.
  • Verwenden Sie equal() für String-Vergleiche und == für primitive Typen.
  • Berücksichtigen Sie alle relevanten Felder, die bestimmen Gleichheit.

Beispiel:

Das bereitgestellte Beispiel überschreibt equal() für die Personenklasse und vergleicht sowohl Name als auch Alter auf Gleichheit:

public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }

    if (obj.getClass() != this.getClass()) {
        return false;
    }

    final Person other = (Person) obj;
    if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
        return false;
    }

    if (this.age != other.age) {
        return false;
    }

    return true;
}

Fazit:

Das Überschreiben der Methode equal() gibt Ihnen mehr Möglichkeiten um benutzerdefinierte Gleichheitsvergleiche für Ihre benutzerdefinierten Objekte zu definieren. Indem Sie die bereitgestellten Schritte und Beispiele sorgfältig befolgen, können Sie Objekte anhand ihrer spezifischen Eigenschaften effektiv vergleichen.

Das obige ist der detaillierte Inhalt vonWie überschreibe ich die Methode equal() in Java richtig?. 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