List.of() — 为什么要提供一个无法添加/删除/编辑的元素的空列表?



我测试过的Java 9功能之一是创建不可修改列表的List.of()。我想知道 - 如果此方法返回无法添加/删除/编辑的元素的空列表,它的目的是什么?

我唯一能想到的就是将此列表与另一个空列表进行比较,但是为什么不直接使用someList.isEmpty()呢?

首先,List.of()不会创建任何新对象。它指的是一个静态的最终常量,正如我们在 OpenJDK 源代码List.java.

static <E> List<E> of() {
return ImmutableCollections.List0.instance();
}

。在java.util.ImmutableCollections.List0.instance()的源代码中:

static <T> List0<T> instance() 
return (List0<T>) INSTANCE;
}

List.of()可以用来返回一个空列表而不是一个null,这有很多优点:

  • 消除NullPointerException风险
  • 客户端代码不必检查null

据我所知,此方法的主要用途是调试。如果你想在某个列表上测试你的代码(比如对元素求和(,有一个快速创建列表的方法很方便。由于内部实现,该列表不可变,但这没关系,因为我们只是使用它来测试您的代码一次。

更新:

由于List.of(E e1, E e2, ...(用于调试,因此没有理由不包含没有参数的List.of((,因为在调试时,您通常会检查边缘情况并查看您的代码是否也适用于空列表。

相关内容

  • 没有找到相关文章

最新更新