Ich möchte Zeichenfolgenwerte meiner Felder abrufen (sie können eine lange Zeichenfolge oder ein beliebiges Objekt sein),
Wenn das Feld null ist, sollte es eine leere Zeichenfolge zurückgeben, ich habe das mit guava gemacht;
%Vor%Aber dies liefert null, wenn das Getriebe null ist! keine leere Zeichenfolge, da valueOf methdd die Zeichenfolge "null" zurückgibt, was zu Fehlern führt.
Irgendwelche Ideen?
EDIt: Es gibt 100s fields Ich suche nach etwas einfach zu implementieren
Sie können Objects.toString()
(Standard in Java 7):
Aus der verknüpften Dokumentation:
public static String toString(Object o, String nullDefault)
Gibt das Ergebnis des Aufrufs von
toString
für das erste Argument zurück, wenn das erste Argument nicht null ist und andernfalls das zweite Argument zurückgibt.Parameter:
ist
o
- ein Objekt
nullDefault
- Zeichenfolge, die zurückgegeben werden soll, wenn das erste Argumentnull
Rückgabe:
das Ergebnis des Aufrufs vontoString
für das erste Argument, wenn es nichtnull
ist und das zweite Argument andernfalls.Siehe auch:
toString(Object)
Wenn es Ihnen nichts ausmacht, Apache-Commons zu verwenden, haben sie eine StringUtils.defaultString(String str)
, das dies tut.
Gibt entweder die in String übergebene Zeichenfolge zurück oder, wenn die Zeichenfolge null ist, eine leere Zeichenfolge ("").
Wenn Sie auch "null"
loswerden wollen, können Sie Folgendes tun:
oder um Groß- / Kleinschreibung zu ignorieren:
%Vor%Für Java 8 können Sie den optionalen Ansatz verwenden:
%Vor%Alle Lösungen, die ich wählen würde, sind bereits gepostet. Also in diesem speziellen Fall, wenn es wirklich 100 solcher Aussagen gibt, die geändert werden müssen, könnte man eine irgendwie schlechte und schmutzige Lösung in Betracht ziehen:
Schreiben Sie Ihre eigene Klasse String
, die ""
für null
zurückgibt. Mit Ihrer eigenen String
Implementierung müssen Sie den vorhandenen Code nicht ändern (fügen Sie eventuell import
hinzu). Aber das ist wirklich eine schlechte Lösung ... Ich möchte es nur erwähnen ;-)
Ich persönlich würde suchen und ersetzen und mit jeder anderen Antwort gehen.