在实践中,返回一个像 this 这样的空列表会更好吗? :
return Collections.emptyList();
或喜欢 this :
return new ArrayList<Foo>();
或者这完全取决于您要如何处理返回的列表?
主要区别在于 Collections.emptyList()
返回一个 不可变 列表,即您不能向其中添加元素的列表。 (同样适用于 Java 9 中引入的 List.of()
。)
在您确实想要修改返回列表的极少数情况下,Collections.emptyList()
和 List.of()
是因此不是一个好的选择。
我想说,只要契约(Contract)(文档)没有明确说明不同,返回一个不可变列表是完全可以的(甚至是首选方式)。
另外,emptyList()
might not create a new object with each call.
Implementations of this method need not create a separate List object for each call. Using this method is likely to have comparable cost to using the like-named field. (Unlike this method, the field does not provide type safety.)
emptyList
的实现如下:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
因此,如果您的方法(返回一个空列表)被频繁调用,这种方法甚至可以在 CPU 和内存方面为您提供稍微更好的性能。
我是一名优秀的程序员,十分优秀!