web-dev-qa-db-fra.com

Obtenir une chaîne vide quand null

Je veux obtenir les valeurs de chaîne de mes champs (ils peuvent être de type chaîne longue ou n'importe quel objet),

si field est null alors qu'il devrait renvoyer une chaîne vide, je l'ai fait avec goyave;

nullToEmpty(String.valueOf(gearBox))
nullToEmpty(String.valueOf(id))
...

Mais ceci retourne null si gearbox est null! chaîne non vide car valueOf methdod renvoie la chaîne "null", ce qui entraîne des erreurs.

Des idées?

EDIt: il y a une centaine de champs que je recherche facilement.

24
Spring

Pour Java 8, vous pouvez utiliser l'approche facultative:

Optional.ofNullable(gearBox).orElse("");
Optional.ofNullable(id).orElse("");
17
Federico Piazza

Si cela ne vous dérange pas d'utiliser Apache commons, ils ont un StringUtils.defaultString(String str) qui le fait. 

Retourne soit la chaîne passée, soit une chaîne vide ("") si la chaîne est nulle.

Si vous voulez aussi vous débarrasser de "null", vous pouvez faire: 

StringUtils.defaultString(str).replaceAll("^null$", "")

ou pour ignorer le cas: 

StringUtils.defaultString(str).replaceAll("^(?i)null$", "")
17
Keppil

Utiliser un contrôle null en ligne

gearBox == null ? "" : String.valueOf(gearBox);
7
Samhain

Puisque vous utilisez de la goyave:

Objects.firstNonNull(gearBox, "").toString();
5
renke

Si autre moyen, Goyave fournit Strings.nullToEmpty(String).

Code source

String str = null;
str = Strings.nullToEmpty(str);
System.out.println("String length : " + str.length());

Résultat

0
1
Won-Sik Kim

La meilleure solution pour toutes les versions est cet exemple clair:

Méthode de mise en œuvre

// object to Object string

public static Object str(Object value) {
    if (value == null) {
        value = new String();
    }
    return value;
}

// Object to String 

public static String str(Object value) {
    if (value == null) {
        value = new String();
    }
    return value.toString();
}

// String to String (without nulls)

public String str(String value) {
    if (value == null) {
        value = new String();
    }
    return value;
}

Utilisation:

str(yourString);
0
delive