实际上,最好返回一个像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和内存方面为您提供更好的性能。

08-04 21:27