其中哪一个更受欢迎?
private static ImmutableList<Airline> sAirlines =
ImmutableList.copyOf(Collections.EMPTY_LIST);
private static ImmutableList<Airline> sAirlines = ImmutableList.of();
答案 0 :(得分:9)
如果你想要一个空的不可变列表,那么你应该使用第二种方法。因为,对于空集合,copyOf
方法无论如何都会在内部调用of()
方法。
copyOf(Collection<? extends E>)
方法内部使用以下方法:
static <E> ImmutableList<E> asImmutableList(Object[] elements) {
switch (elements.length) {
case 0:
return of();
case 1:
@SuppressWarnings("unchecked") // collection had only Es in it
ImmutableList<E> list = new SingletonImmutableList<E>((E) elements[0]);
return list;
default:
return construct(elements);
}
}
正如您所看到的,对于0
的长度,它只是调用of()
方法。