97 votes

Quelle est la différence entre les Collections.emptyList() et les Collections.EMPTY_LIST

En Java, nous avons des Collections.emptyList() et des Collections.EMPTY_LIST. Les deux ont la même propriété:

Retourne la liste vide (immuable). Cette liste est sérialisable.

Alors, quelle est la différence exacte entre l'utilisation de l'un ou de l'autre?

121voto

aoeu Points 9342
  • Collections.EMPTY_LIST renvoie un style ancien List
  • Collections.emptyList() utilise l'inférence de type et, par conséquent, renvoie List<T>

Les Collections.emptyList() a été ajoutée dans Java 1.5 et il est probablement préférable. De cette façon, vous n'avez pas besoin de inutilement jeté autour dans votre code.

Collections.emptyList() intrinsèquement le cast pour vous.

@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

17voto

NimChimpsky Points 20263

Permet de se rendre à la source :

 public static final List EMPTY_LIST = new EmptyList<>();

et

@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

13voto

Andremoniy Points 7349

Ils sont tout à fait égal objets.

public static final List EMPTY_LIST = new EmptyList<>();

public static final <T> List<T> emptyList() {
    return (List<T>) EMPTY_LIST;
}

La seule qu' emptyList() retours générique List<T>, de sorte que vous pouvez affecter cette liste de collection générique sans aucun avertissement.

13voto

mel3kings Points 1201

En d'autres termes, EMPTY_LIST n'est pas le type de sécurité:

  List list = Collections.EMPTY_LIST;
  Set set = Collections.EMPTY_SET;
  Map map = Collections.EMPTY_MAP;

Par rapport à:

    List<String> s = Collections.emptyList();
    Set<Long> l = Collections.emptySet();
    Map<Date, String> d = Collections.emptyMap();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X