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

Boundly-extended Wildcards in java Generics

我尝试泛型有一段时间了,但我想出了我无法解释的 smt:

如果我们有这样的方法 return 集合的第一个元素:

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));

所以,我的问题是 returned 在 magic_method 中输入的实际内容是什么?

<? extends T> 

如果我们传递 Integer 的集合,编译器会自动 "understand" T 应该是 Number(因为 NumberInteger 的超 class)?

还是我遗漏了什么?

这不是 extends 在此上下文中的意思。这里 extends 表示“TT 的子类型”。

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