Guava Joiner 对 null 元素抛出 NPE

Jon*_*nyD 0 java guava

Joiner这里初始化不正确吗?我有以下课程,当我尝试使用 加入示例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
Run Code Online (Sandbox Code Playgroud)

bur*_*ete 5

您必须使用skipNulls()、 或useForNull(defaultValue),它位于其文档的顶部;

如果既没有指定skipNulls()也没有指定useForNull(String),并且任何给定元素为null,连接方法将抛出NullPointerException。

所以你必须joiner像这样初始化;

Joiner joiner = Joiner.on("/").skipNulls();
Run Code Online (Sandbox Code Playgroud)

或者

Joiner joiner = Joiner.on("/").useForNull("");
Run Code Online (Sandbox Code Playgroud)

Guava 的 Joiner 文档