我正在尝试使用Generics一段时间而且我想出了smt我无法解释:
如果我们有这样的方法来返回集合的第一个元素:
public static <T> T magic_method(List<? extends T> coll) {
return coll.get(0);
}
让我们称之为:
List<Integer> l = Arrays.asList(12345);
System.out.println(magic_method(l));
所以,我的问题是 magic_method中的实际返回类型是什么?
<? extends T>
如果我们传递Integer
的集合,编译器会自动&#34;理解&#34;那
T
应为Number
(因为Number
是Integer
的超类?)
或者我错过了什么?
答案 0 :(得分:2)
这不是extends
在这种情况下的含义。此处extends
表示“T
或T
”的子类型。
将? extends T
视为可以分配给T
类型变量的类型说明符。