该行通过使用泛型类型参数调用静态方法来创建一个空字符串列表。
在Collections
类内部,有一个静态方法emptyList
声明为:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
这具有通用类型参数T
。我们使用以下方法调用此方法:
List<String> list = Collections.emptyList();
并被T
推断为是String
由于list
。
我们还可以T
通过在调用时将其放在尖括号中来指定其类型emptyList
。如果我们想要比推断的类型更具体的类型,则可能需要这样做:
List<? extends Object> list = Collections.<String>emptyList();
emptyList<String>()
是不正确的,因为该放置仅在创建泛型类的实例而不是调用方法时有效。当使用new
两个可能的类型参数时,类名之前的仅用于构造函数,类名之后的用于整个实例,因此对于类:
class MyClass<A> {
public <B> MyClass(A a, B b) {
System.out.println(a + ", " + b);
}
}
我们可以调用它的构造,其中A
是String
和B
是Integer
这样的:
MyClass<String> a = new <Integer>MyClass<String>("a", 3);
或使用类型推断:
MyClass<String> a = new MyClass<>("a", 3);
也可以看看:
Collections
是一个Java类。