example español ejemplo java list collections

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, devuelve List<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; }