it-swarm.com.de

Können wir uns auf String.isEmpty verlassen, um die Nullbedingung für einen String in Java zu überprüfen?

Ich übergebe eine Account-ID als Eingabe aus einer XML-Datei (siehe Abbildung), die später analysiert und in unserem Code verwendet wird:

<accountid>123456</accountid>
<user>pavan</user>

Das Problem ist, dass wenn nichts übergeben wird (Nullwert in accoutnid) als Konto-ID übergeben wird, ich diese Situation im Java-Code nicht verarbeiten kann. Ich habe es versucht, war aber nicht erfolgreich:

if (acct != null||acct==""||acct.equals("")) 
{
    // the above is not working 
}

Ich konnte dies mit folgendem Ansatz erfolgreich bewältigen:

if(!acct.isEmpty())
{
   // thisis working 
}

Können wir uns auf die String.isEmpty()-Methode zur Überprüfung der Nullbedingung einer String verlassen? Ist das gültig?

40
Kiran

Nein, absolut nicht - denn wenn acct null ist, wird nicht einmal es zu isEmpty... gelangen, sondern es wird sofort eine NullPointerException ausgegeben.

Ihr Test sollte sein:

if (acct != null && !acct.isEmpty())

Beachten Sie die Verwendung von && hier und nicht Ihren || im vorherigen Code. Beachten Sie auch, dass Ihre Bedingungen in Ihrem vorherigen Code ohnehin falsch waren. Selbst mit && hätten Sie den Körper if nur eingegeben, wenn acct eine leere Zeichenfolge war.

Alternativ verwenden Sie Guave :

if (!Strings.isNullOrEmpty(acct))
103
Jon Skeet

Verwenden Sie stattdessen StringUtils.isEmpty, es wird auch nach null gesucht.

Beispiele sind:

 StringUtils.isEmpty(null)      = true
 StringUtils.isEmpty("")        = true
 StringUtils.isEmpty(" ")       = false
 StringUtils.isEmpty("bob")     = false
 StringUtils.isEmpty("  bob  ") = false

Mehr dazu auf offizielle Dokumentation zu String Utils .

16
lradacher

Sie können String.isEmpty() nicht verwenden, wenn es null ist. Am besten haben Sie Ihre eigene Methode, um null oder leer zu überprüfen. 

public static boolean isBlankOrNull(String str) {
    return (str == null || "".equals(str.trim()));
}
6
Vaandu

Nein, die String.isEmpty()-Methode sieht folgendermaßen aus:

public boolean isEmpty() {
    return this.value.length == 0;
}

wie Sie sehen, wird die Länge des Strings überprüft Sie müssen also unbedingt prüfen, ob der String Null ist.

1
Martin Niederl
String s1=""; // empty string assigned to s1 , s1 has length 0, it holds a value of no length string

String s2=null; // absolutely nothing, it holds no value, you are not assigning any value to s2

null ist also nicht gleich leer.

hoffentlich hilft das!!!

1
sdinesh94