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 № 1Collections.EMPTY_LIST
gibt einen alten Stil zurückList
Collections.emptyList()
verwendet Typinferenz und gibt daher zurückList<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();