java泛型中的有界扩展通配符

时间:2015-01-11 13:54:06

标签: java generics

我正在尝试使用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(因为NumberInteger的超类?)

或者我错过了什么?

1 个答案:

答案 0 :(得分:2)

这不是extends在这种情况下的含义。此处extends表示“TT”的子类型。

? extends T视为可以分配给T类型变量的类型说明符。