java - Guava Joiner 对 null 元素抛出 NPE

标签 java guava

这里Joiner的初始化是否不正确?我有以下类,当我尝试使用 joiner 连接示例 paths 数组时,我收到一个 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("");

Documentation of Joiner from Guava

关于java - Guava Joiner 对 null 元素抛出 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476156/

相关文章:

Java JDBC 准备语句最大参数标记

java - 使用 JAVA 1.7.0_45,Applet 不显示在 HTTPS 上,没有握手错误

java - 数组适配器中出现空指针异常。没有找到 View ?

java - Guava 缓存并保留已检查的异常

java - GZIPInputStream 最后填充零?

java - Eclipse 如何知道 com.sun 是受限 API?

java - 内部静态类字段可见性

java - 分解任何字符串

java - 为什么 Google Guava 在存在等效构造函数的情况下提供静态方法?

java - 使用附加值或新值扩展 ImmutableMap