Vergleicht zwei Objekte, von denen beide null sein können

8

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 .

    
Mike Baxter 04.02.2014, 09:26
quelle

4 Antworten

21

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.

  

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.

%Vor%     
Subhrajyoti Majumder 04.02.2014, 09:30
quelle
0
%Vor%     
Kick 04.02.2014 09:29
quelle
0

Verwenden Sie StringUtils, die von Apache bereitgestellt werden

%Vor%     
Pratik Shelar 04.02.2014 09:30
quelle
0

Sie können Apache-Objekt-Utils verwenden

ObjectUtils.equals(Object object1, Object object2) - Liefert den booleschen Wert

zurück

Diese Methode wurde in Java 7 durch java.util.Objects.equals (Object, Object) ersetzt.

    
gowtham 04.02.2014 09:39
quelle

Tags und Links