Leere Zeichenfolge, wenn null

9

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

    
Spring 21.02.2014, 13:59
quelle

6 Antworten

45

Sie können Objects.toString() (Standard in Java 7):

%Vor%

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:
o - ein Objekt
nullDefault - Zeichenfolge, die zurückgegeben werden soll, wenn das erste Argument null

ist          

Rückgabe:
      das Ergebnis des Aufrufs von toString für das erste Argument, wenn es nicht null ist und das zweite Argument andernfalls.

         

Siehe auch:
toString(Object)

  
    
arshajii 21.02.2014, 14:02
quelle
8

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:

%Vor%

oder um Groß- / Kleinschreibung zu ignorieren:

%Vor%     
Keppil 21.02.2014 14:02
quelle
6

Verwenden Sie einen Inline-Null-Check

%Vor%     
Samhain 21.02.2014 14:00
quelle
5

Da du Guava verwendest:

%Vor%     
renke 21.02.2014 14:20
quelle
5

Für Java 8 können Sie den optionalen Ansatz verwenden:

%Vor%     
Federico Piazza 20.03.2017 22:17
quelle
0

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.

    
Kai 21.02.2014 14:09
quelle

Tags und Links