5 Stimmen

Implementierung der Methode "equals" in Java

Dies ist meine Implementierung der gleich-Klasse für eine Coor-Klasse, die nur 2 Ints x und y enthält. wäre dies der richtige Weg der Implementierung dieser Methode?

 public boolean equals(Object obj) {
        if (obj == null || obj.getClass() != this.getClass()) {
            return false;
        }
        Coor temp = (Coor) obj;
        if (temp.x == this.x && temp.y == this.y) {
            return true;
        } else {
            return false;
        }
    }

0voto

pseudoramble Punkte 2491

Ich glaube, auf den ersten Blick würde das funktionieren. Ich sage dies, weil:

  1. Es behandelt null/fehlerhafte Typen gut.
  2. Die Ausführung von x.equals(y) würde das gleiche Ergebnis liefern wie y.equals(x).
  3. Die Ausführung von x.equals(x) würde true zurückgeben.
  4. Ausführen von x.equals(y) == true und y.equals(z) == true bedeutet, dass x.equals(z) == true ist

Aber diese Frage wurde sicherlich schon oft gestellt. Siehe hier: Überschreibung von equals und hashCode in Java . Ein Buch namens Leistungsfähiges Java wird dieses Thema ebenfalls sehr ausführlich behandelt, und das entsprechende Kapitel ist dort verlinkt.

0voto

duffymo Punkte 298898

Es gibt nur eine Quelle, in der man nachlesen kann, wie man equals und hashCode außer Kraft setzt: Kapitel 3 von Joshua Blochs "Effektivem Java".

Wenn Sie eine gute IDE, wie IntelliJ, haben, wird sie Gleichungen und HashCode auf die richtige Weise für Sie generieren.

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