1

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

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

4

2 回答 2

3

首先,List.of()不创建任何新对象。正如我们在 OpenJDK 源代码中看到的那样,它指的是一个静态的 final 常量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()可以用来返回一个空列表而不是 a null,它有很多优点:

  • 消除了风险NullPointerException
  • 客户端代码不必检查null
于 2018-09-29T21:16:23.663 回答
-3

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

更新

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

于 2018-09-29T21:15:48.847 回答