java - español - ¿Cuál es la diferencia entre Collections.emptyList() y Collections.EMPTY_LIST
list<> java example (4)
En otras palabras, EMPTY_LIST no es seguro de tipos:
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();
En Java, tenemos Collections.emptyList() y Collections.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?
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 la List<T>
genérica List<T>
, por lo que puede asignar esta lista a la colección genérica sin advertencias.
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;
}
-
Collections.EMPTY_LIST
devuelve una lista antigua -
Collections.emptyList()
utiliza type-inference y, por lo tanto, devuelveList<T>
Collections.emptyList () se agregó en Java 1.5 y es probable que siempre sea preferible . De esta manera, no necesita innecesariamente lanzar dentro de su código.
Collections.emptyList()
intrínsecamente hace el reparto por ti .
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}