2017-04-18 14 views
-1

ここでJoinerの初期化が間違っていますか?私は次のクラスを持っていて、例pathsjoinerと結合しようとすると、私はNullPointerExceptionを得ています。Guava Joinerがヌル要素のNPEをスローする

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 

答えて

1

は、あなたはそれがそのドキュメントの上にあり、skipNulls()、またはuseForNull(defaultValue)のいずれかを使用する必要があります。

skipNulls()もuseForNull(String)も指定されていない場合、指定された要素がnullの場合、結合メソッドはNullPointerExceptionをスローします。

joinerのように初期化する必要があります。

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

又は

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

Documentation of Joiner from Guava

関連する問題