Guava Joiner 在 null 元素上抛出 NPE
Guava Joiner throws NPE on null elements
这里Joiner
的初始化是不是不正确?我有以下 class,当我尝试将示例 paths
数组与 joiner
连接时,我得到一个 NullPointerException
。
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
您必须使用 skipNulls()
或 useForNull(defaultValue)
,它在其文档的顶部;
If neither skipNulls() nor useForNull(String) is specified, the joining methods will throw NullPointerException if any given element is null.
所以你必须像这样初始化joiner
;
Joiner joiner = Joiner.on("/").skipNulls();
或
Joiner joiner = Joiner.on("/").useForNull("");
这里Joiner
的初始化是不是不正确?我有以下 class,当我尝试将示例 paths
数组与 joiner
连接时,我得到一个 NullPointerException
。
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
您必须使用 skipNulls()
或 useForNull(defaultValue)
,它在其文档的顶部;
If neither skipNulls() nor useForNull(String) is specified, the joining methods will throw NullPointerException if any given element is null.
所以你必须像这样初始化joiner
;
Joiner joiner = Joiner.on("/").skipNulls();
或
Joiner joiner = Joiner.on("/").useForNull("");