2008-10-03 14 views

Antwort

31

Durch die folgenden Schritte ausführen:

List<User> users = Collections.emptyList(); 

Der Typ der zurückgegebenen Liste von Collections.emptyList();abgeleitete als String wird aufgrund der linken Seite der Zuweisung . Wenn Sie jedoch lieber nicht diese Folgerung haben, können Sie es explizit definieren, indem Sie folgendermaßen vorgehen:

List<User> users = Collections.<User>emptyList(); 

In diesem speziellen Fall, dies für die meisten Menschen als überflüssig erscheint (in der Tat habe ich sehr gesehen wenig Code in der Wildnis, die Verwendung von expliziten Typargumente), jedoch für ein Verfahren mit der Unterschrift macht: void doStuff(List<String> users) wäre es absolut sauber sein für eine doStuff() mit einer expliziten Typargument aufrufen wie folgt:

doStuff(Collections.<String>emptyList()); 
+2

Jedes Mal, wenn Sie ein explizites Argument in einer Methode aufschreiben, tötet Gott ein Kätzchen (ich glaube, es war Josh Bloch, der das sagte) –

1
List<User> users = Collections.emptyList(); 
1

Nach Kreatin In der leeren Liste würde ich empfehlen, sie als Konstante zu speichern, anstatt jedes Mal eine neue zu erstellen.

Es gibt auch Leistungsvorteile bei der Verwendung Collections.emptyList() gegenüber new ArrayList(0), obwohl der Unterschied wahrscheinlich gering ist. Die von emptyList() zurückgegebene Liste ist als unveränderliche leere Liste optimiert. Zum Beispiel gibt die Methode size() einfach 0 zurück, anstatt eine Feldsuche oder was auch immer ArrayList tut.

Verwandte Themen