解释集合的语法。emptyList()

【字号: 日期:2024-02-27浏览:18作者:雯心
如何解决解释集合的语法。emptyList()?

该行通过使用泛型类型参数调用静态方法来创建一个空字符串列表。

在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);通用方法类型推断解决方法

我只是研究了通用编程,List<E>接口和ArrayList,所以我可以理解下面的语句。

ArrayList<String> list = new ArrayList<String>();

但是我不理解在浏览网络时看到的下一条语句。

List<String> list2 = Collections.<String>emptyList();什么Collections啊 为什么不是Collections<E>还是Collections<String>?为什么<String>将方法名称放在前面emptyList?

(emptyList<String>()对于Generic来说不正确吗?)

该声明是什么意思?
相关文章: