En Java, tenemos Colecciones.emptyList () y Colecciones.EMPTY_LIST. Ambos tienen la misma propiedad:
Devuelve la lista vacía (inmutable). Esta lista es serializable.
Entonces, ¿cuál es la diferencia exacta entre usar uno u otro?
Respuestas
92 para la respuesta № 1Collections.EMPTY_LIST
devuelve un estilo antiguoList
Collections.emptyList()
usa inferencia de tipo y por lo tanto devuelveList<T>
Se agregó Collections.emptyList () en Java 1.5 y probablemente siempre sea preferible. De esta manera, no es necesario que se convierta innecesariamente en su código.
Collections.emptyList()
intrínsecamente hace el elenco para ti.
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
16 para la respuesta № 2
Vamos a llegar a la fuente:
public static final List EMPTY_LIST = new EmptyList<>();
y
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
12 para la respuesta № 3
Son objetos absolutamente iguales.
public static final List EMPTY_LIST = new EmptyList<>();
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
El único es que emptyList()
devuelve genérico List<T>
, por lo que puede asignar esta lista a una colección genérica sin ninguna advertencia.
8 para la respuesta № 4
En otras palabras, EMPTY_LIST no es de tipo seguro:
List list = Collections.EMPTY_LIST;
Set set = Collections.EMPTY_SET;
Map map = Collections.EMPTY_MAP;
En comparación con:
List<String> s = Collections.emptyList();
Set<Long> l = Collections.emptySet();
Map<Date, String> d = Collections.emptyMap();