实际上,最好返回一个像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.
emptyList
的实现如下所示:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
因此,如果经常调用您的方法(返回一个空列表),则此方法甚至可以在CPU和内存方面为您提供更好的性能。