Collections.emptyList() vs. new instance
2022-08-31 05:23:08
主要区别在于 Collections.emptyList()
返回一个不可变的列表,即一个无法添加元素的列表。(这同样适用于 Java 9 中引入的 List.of(
)。
在极少数情况下,您确实想要修改返回的列表,因此不是一个好的选择。Collections.emptyList()
List.of()
我想说的是,只要契约(文档)没有明确说明不同,返回一个不可变的列表是完全可以的(甚至是首选的方式)。
此外,可能不会在每次调用时创建新对象。emptyList()
此方法的实现不需要为每个调用创建单独的 List 对象。使用此方法的成本可能与使用同名字段相当。(与此方法不同,该字段不提供类型安全性。
实现方式如下:emptyList
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
因此,如果您的方法(返回空列表)经常被调用,则此方法甚至可以在CPU和内存方面为您提供稍微更好的性能。
从 Java 5.0 开始,您可以在容器中指定元素的类型:
Collections.<Foo>emptyList()
我同意其他回答,即对于要返回保持为空的空列表的情况,应使用此方法。