Gibt die leere Liste zurück (unveränderlich). Diese Liste ist serialisierbar.
Was ist also der genaue Unterschied zwischen der Verwendung des einen oder des anderen?
poitroae
Collections.EMPTY_LIST gibt einen alten Stil zurück List
Collections.emptyList() verwendet Typrückschluss 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 herumsuchen.
Collections.emptyList() macht eigentlich die Besetzung für dich.
@SuppressWarnings("unchecked")
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Ich bin mir dessen nicht zu 100 % sicher, aber ich glaube, dass die Verwendung/Rückgabe der nicht typisierten Version (EMPTY_LIST/EMPTY_SET/EMPTY_MAP) dazu führt, dass der Compiler die Überprüfung des generischen Typs innerhalb der angegebenen Aufrufkette aufgibt. Es stellt im Wesentlichen fest, dass es in alten Code geraten ist, dem generische Typen fehlen, und aufgibt.
– Matt Passell
23. September 2015 um 17:43 Uhr
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;
}
mel3kings
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();
Sie sind absolut gleichwertige 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 generisch zurück List<T>sodass Sie diese Liste ohne Warnungen einer generischen Sammlung zuweisen können.
13123600cookie-checkWas ist der Unterschied zwischen Collections.emptyList() und Collections.EMPTY_LISTyes