2017-04-18 2 views
-1

L'initialisation de Joiner est-elle incorrecte ici? J'ai la classe suivante, et quand j'essaye de joindre le tableau exemple paths avec le joiner, j'obtiens un NullPointerException.Guava Joiner lève NPE sur les éléments NULL

public class CPath { 
    private static final Joiner joiner = Joiner.on("/"); 

    private String[] elements; 

    @Override 
    public String toString() { 
    return joiner.join(elements); 
    } 
} 

// main method 
final String[] paths = {"a/b/c", "d", "", null, "e/f/g", "h/i", null, ""}; 
final CPath c3 = new CPath(paths); 
c3.toString(); //<<<< NPE 

Répondre

1

Vous devez utiliser soit skipNulls() ou useForNull(defaultValue), il est au sommet de sa documentation;

Si ni skipNulls() ni useForNull (String) ne sont spécifiés, les méthodes de jointure lanceront NullPointerException si un élément donné est null.

Vous devez donc initialiser joiner comme;

Joiner joiner = Joiner.on("/").skipNulls(); 

ou

Joiner joiner = Joiner.on("/").useForNull(""); 

Documentation of Joiner from Guava