Collections.emptyList() 和 Collections.EMPTY_LIST

2022-08-31 09:25:31

在Java中,我们有Collections.emptyList()Collections.EMPTY_LIST。两者具有相同的属性:

返回空列表(不可变)。此列表是可序列化的。

那么使用一个或另一个之间的确切区别是什么?


答案 1
  • Collections.EMPTY_LIST返回旧式列表
  • Collections.emptyList()使用类型推断,因此返回 List<T>

Collections.emptyList() 是在 Java 1.5 中添加的,它可能总是更可取的。这样,您就不需要在代码中不必要地进行转换。

Collections.emptyList()本质上为你做演员

@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

答案 2

让我们来看看源头:

 public static final List EMPTY_LIST = new EmptyList<>();

@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}