Diese Zeile erstellt eine leere Liste von Zeichenfolgen, indem eine statische Methode mit einem generischen Typparameter aufgerufen wird.
Innerhalb der Collections
Klasse gibt es eine statische Methode emptyList
, die wie folgt deklariert ist:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Dies hat einen generischen Typparameter T
. Wir nennen call this method mit:
List<String> list = Collections.emptyList();
und T
wird String
aufgrund der Art von als gefolgert list
.
Wir können den Typ auch angeben, T
indem wir ihn beim Aufruf in spitze Klammern setzen emptyList
. Dies kann erforderlich sein, wenn wir einen spezifischeren Typ wünschen, als abgeleitet wird:
List<? extends Object> list = Collections.<String>emptyList();
emptyList<String>()
ist nicht korrekt, da diese Platzierung nur gültig ist, wenn Instanzen generischer Klassen erstellt werden und keine Methoden aufgerufen werden. Bei Verwendung new
gibt es zwei mögliche Typparameter, die vor dem Klassennamen nur für den Konstruktor und die nach dem Klassennamen für die gesamte Instanz, also für die Klasse:
class MyClass<A> {
public <B> MyClass(A a, B b) {
System.out.println(a + ", " + b);
}
}
Wir können seinen Konstruktor nennen, wo A
ist String
und B
ist Integer
wie:
MyClass<String> a = new <Integer>MyClass<String>("a", 3);
oder durch Verwendung der Typinferenz:
MyClass<String> a = new MyClass<>("a", 3);
Siehe auch:
Collections
ist eine Java-Klasse.