Em Java, temos Collections.emptyList () e Collections.EMPTY_LIST . Ambos têm a mesma propriedade:
Retorna a lista vazia (imutável). Esta lista é serializável.
Então, qual é a diferença exata entre usar um ou outro?
Em Java, temos Collections.emptyList () e Collections.EMPTY_LIST . Ambos têm a mesma propriedade:
Retorna a lista vazia (imutável). Esta lista é serializável.
Então, qual é a diferença exata entre usar um ou outro?
Respostas:
Collections.EMPTY_LIST
retorna um estilo antigo List
Collections.emptyList()
usa inferência de tipo e, portanto, retorna
List<T>
Collections.emptyList () foi adicionado em Java 1.5 e provavelmente é sempre preferível . Dessa forma, você não precisa lançar mão desnecessariamente em seu código.
Collections.emptyList()
faz o elenco intrinsecamente para você .
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Vamos à fonte:
public static final List EMPTY_LIST = new EmptyList<>();
e
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Eles são objetos absolutamente iguais.
public static final List EMPTY_LIST = new EmptyList<>();
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
O único é que emptyList()
retorna genérico List<T>
, portanto, você pode atribuir essa lista à coleção genérica sem quaisquer avisos.
Em outras palavras, EMPTY_LIST não é seguro para o tipo:
List list = Collections.EMPTY_LIST;
Set set = Collections.EMPTY_SET;
Map map = Collections.EMPTY_MAP;
Em comparação com:
List<String> s = Collections.emptyList();
Set<Long> l = Collections.emptySet();
Map<Date, String> d = Collections.emptyMap();