Java 泛型中的边界扩展通配符



我试验泛型有一段时间了,我想出了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集合,编译器是否会自动"理解"该 T应该Number(因为NumberInteger的超类)?

还是我错过了什么?

在这种情况下,

这不是extends的意思。这里extends的意思是"TT的子类型"。

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

最新更新