Je suis en train de passer un identifiant de compte en entrée d'un fichier XML comme indiqué, qui sera analysé plus tard et utilisé dans notre code:
<accountid>123456</accountid>
<user>pavan</user>
Le problème est que si rien n'est passé (la valeur null dans accoutnid) est passée en tant que accountid, je ne pourrais pas gérer cette situation en code Java. J'ai essayé cela mais je n'ai pas réussi:
if (acct != null||acct==""||acct.equals(""))
{
// the above is not working
}
J'ai pu gérer cela avec succès en utilisant l'approche suivante:
if(!acct.isEmpty())
{
// thisis working
}
Pouvons-nous compter sur la méthode String.isEmpty()
pour vérifier la condition null d'une String
? Est-ce valide?
Non, absolument pas - car si acct
est null, il ne sera même pas get à isEmpty
... il jettera immédiatement une NullPointerException
.
Votre test devrait être:
if (acct != null && !acct.isEmpty())
Notez l'utilisation de &&
ici, plutôt que votre ||
dans le code précédent; Notez également que dans votre code précédent, vos conditions étaient de toute façon erronées - même avec &&
, vous n'auriez entré le corps if
que si acct
était une chaîne vide.
Sinon, utilisez Goyave :
if (!Strings.isNullOrEmpty(acct))
Utilisez StringUtils.isEmpty
à la place, il recherchera également null.
Les exemples sont:
StringUtils.isEmpty(null) = true
StringUtils.isEmpty("") = true
StringUtils.isEmpty(" ") = false
StringUtils.isEmpty("bob") = false
StringUtils.isEmpty(" bob ") = false
Plus d'informations sur Documentation officielle sur String Utils .
Vous ne pouvez pas utiliser String.isEmpty()
s'il est null. Le mieux est d’avoir votre propre méthode pour vérifier null ou vide.
public static boolean isBlankOrNull(String str) {
return (str == null || "".equals(str.trim()));
}
Non, la méthode String.isEmpty()
se présente comme suit:
public boolean isEmpty() {
return this.value.length == 0;
}
comme vous pouvez le voir, il vérifie la longueur de la chaîneso vous devez absolument vérifier si la chaîne est nulle auparavant.
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
donc null n'est pas identique à vide.
j'espère que cela pourra aider!!!