Ich habe eine Funktion in einer meiner Klassen, die sich mit einer anderen Instanz derselben Klasse vergleicht - und herausfindet, welche Variablen sich unterscheiden. Dies dient dem Zweck, die Netzwerklast mit einer Hauptdatenbank zu minimieren (indem nur Daten hochgeladen werden, die hochgeladen werden müssen, anstatt das gesamte Objekt hochzuladen).
Dafür habe ich versucht, die Funktion object.equals()
zu benutzen, um die beiden Objekte zu vergleichen.
Ich habe bald festgestellt, dass object.equals()
nicht mit null
s und nach dem Lesen von diese Frage verstehe ich warum.
Also ein Beispiel für meinen kaputten Code ist wie folgt:
%Vor%Meine Frage ist - auf der Basis, dass entweder eine der verglichenen Variablen könnte null sein, was eine einfache Möglichkeit ist, zwei Variablen zu vergleichen und dabei ein% co_de zu vermeiden %?
Bearbeiten:
Einfach zuerst auf Null auf beiden Objekten zu überprüfen funktioniert nicht gut, da ich immer noch vergleichen möchte, wenn das Objekt eine Referenz hat oder nicht. Wenn beispielsweise ein Element NullPointerException
ist und das andere nicht, möchte ich, dass es in null
aufgelöst wird, da sich die Variable geändert hat .
Seit 1.7 gibt es in jdk eine neue Dienstprogrammklasse, die Objects
.
Diese Klasse besteht aus statischen Hilfsmethoden zum Arbeiten mit Objekte. Diese Dienstprogramme enthalten nullsichere oder nulltolerante Methoden zum Berechnen des Hash-Codes eines Objekts, Zurückgeben einer Zeichenfolge für ein Objekt und vergleicht zwei Objekte.
Sie können Objects.equals
verwenden, es behandelt null.
%Vor%Objects.equals (Objekt a, Objekt b) Gibt true zurück, wenn die Argumente gleich und falsch sind Andernfalls. Wenn beide Argumente null sind, wird daher true zurückgegeben und wenn genau ein Argument null ist, wird false zurückgegeben. Andernfalls, Gleichheit wird bestimmt, indem die Gleichheits-Methode der ersten verwendet wird Argument.
Verwenden Sie StringUtils, die von Apache bereitgestellt werden
%Vor%Tags und Links java