Collections.emptyList()和Collections.EMPTY_LIST有什么区别
在Java中,我们有Collections.emptyList()和Collections.EMPTY_LIST 。 两者都有相同的属性:
返回空列表(不可变)。 这个列表是可序列化的。
那么使用这个或那个之间的确切区别是什么?
-
Collections.EMPTY_LIST
返回一个旧样式的List
-
Collections.emptyList()
使用types推断,因此返回List<T>
Collections.emptyList()是在Java 1.5中添加的,可能总是可取的 。 这样,你不需要在代码中不必要的投入。
Collections.emptyList()
本质上为你施放。
@SuppressWarnings("unchecked") public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; }
让我们来源:
public static final List EMPTY_LIST = new EmptyList<>();
和
@SuppressWarnings("unchecked") public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; }
他们是绝对平等的对象。
public static final List EMPTY_LIST = new EmptyList<>(); public static final <T> List<T> emptyList() { return (List<T>) EMPTY_LIST; }
唯一的是emptyList()
返回genericsList<T>
,所以你可以将这个列表分配给generics集合而不会有任何警告。
换句话说,EMPTY_LIST不是types安全的:
List list = Collections.EMPTY_LIST; Set set = Collections.EMPTY_SET; Map map = Collections.EMPTY_MAP;
相比于:
List<String> s = Collections.emptyList(); Set<Long> l = Collections.emptySet(); Map<Date, String> d = Collections.emptyMap();