/ / Was ist der Unterschied zwischen Collections.emptyList () und Collections.EMPTY_LIST - Java, Liste, Sammlungen

Was ist der Unterschied zwischen Collections.emptyList () und Collections.EMPTY_LIST - Java, Liste, Sammlungen

In Java haben wir Collections.emptyList () und Collections.EMPTY_LIST. Beide haben die gleiche Eigenschaft:

Liefert die leere Liste (unveränderlich). Diese Liste ist serialisierbar.

Was ist der genaue Unterschied zwischen dem einen und dem anderen?

Antworten:

92 für die Antwort № 1
  • Collections.EMPTY_LIST gibt einen alten Stil zurück List
  • Collections.emptyList() verwendet Typinferenz und gibt daher zurück List<T>

Collections.emptyList () wurde in Java 1.5 hinzugefügt und ist wahrscheinlich immer vorzuziehen. Auf diese Weise müssen Sie nicht unnötig in Ihrem Code herumspielen.

Collections.emptyList() von Natur aus macht die Besetzung für dich.

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

16 für die Antwort № 2

Kommen wir zur Quelle:

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

und

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

12 für die Antwort № 3

Sie sind absolut gleiche Objekte.

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

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

Das einzige ist das emptyList() Gibt generisches zurück List<T>Sie können diese Liste also ohne Warnungen einer generischen Sammlung zuweisen.


8 für die Antwort № 4

Mit anderen Worten, EMPTY_LIST ist nicht typsicher:

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

Verglichen mit:

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