我是 java 新手,我试图从 Java 泛型和集合一书中理解下面奇怪的语法。(我广泛使用 C++ 模板,因此可以声称了解泛型编程的基础知识和可能的陷阱):
interface Collection <E> {
...
public boolean addAll(Collection<? extends E> c);
...
}
为什么上面不能写成:
interface Collection <E> {
...
public boolean addAll(Collection<T extends E> c);
...
}
有什么不同?仅仅是语言限制还是引擎盖下有什么区别?