Sie können nur Nullprüfungen in Ihrer equals () -Methode überspringen.
Michael Myers
1
Wenn Sie eine Sammlung implementieren, muss Ihre .contains () -Methode, wenn "o" angegeben ist, testen, ob diese Sammlung mindestens ein Element e enthält, so dass (o == null? E == null: o.equals (e )). " Ebenso muss Ihre .remove () -Methode ein solches Element entfernen.
Newacct
6
Nur meine zwei Cent. Ich würde verwenden: public static boolean bothNullOrEqual (Objekt x, Objekt y) {return (x == y || (x! = Null && x.equals (y))); } IMHO, es ist besser für Anfänger Programmierer.
m_vitaly
1
Ein weiterer Anwendungsfall: Vergleichen Sie einen Wert, um festzustellen, ob er sich während einer schmutzigen Prüfung von seinem vorherigen Wert geändert hat.
Neromancer
Antworten:
193
Mit Java 7 können Sie jetzt direkt einen Null-Safe gleichsetzen:
Diese Methode ist auch in Googles Dependency Injection-Libray Guice implementiert.
Niels
1
Spring implementiert auch eine ähnliche Methode: nullSafeEquals auf ObjectUtils-Klasse
jpsstavares
2
Google Guava hat auch Objects.equals ().
Spina
Dies ist nur nullsicher in Bezug auf x. Für y hängt es von der Implementierung von Gleichheiten des gegebenen Objekts ab. (die Implementierung ist return (x == y) || (x != null && x.equals(y));)
emi-le
23
Wenn Sie zufällig Zugriff auf die Jakarta Commons-Bibliothek haben, gibt es ObjectUtils.equals () und viele andere nützliche Funktionen.
Antworten:
Mit Java 7 können Sie jetzt direkt einen Null-Safe gleichsetzen:
Objects.equals (x, y)
(Die Jakarta Commons-Bibliothek ObjectUtils.equals () ist mit Java 7 veraltet.)
quelle
return (x == y) || (x != null && x.equals(y));
)Wenn Sie zufällig Zugriff auf die Jakarta Commons-Bibliothek haben, gibt es ObjectUtils.equals () und viele andere nützliche Funktionen.
EDIT: Die Frage zunächst falsch verstanden
quelle
Wenn Sie <1.7 verwenden, aber Guava zur Verfügung haben:
Objects.equal(x, y)
quelle