我是Java的新手,正在尝试理解下面这个来自《Java Generics and Collections》书中的奇怪语法。(我曾经广泛地使用C++模板,因此可以声称理解通用编程的基础知识和可能出现的问题):
interface Collection <E> {
...
public boolean addAll(Collection<? extends E> c);
...
}
为什么上述内容不能写成以下形式:
interface Collection <E> {
...
public boolean addAll(Collection<T extends E> c);
...
}
有什么区别吗?仅仅是语言限制还是底层有任何差异?
public <T extends E> boolean addAll(Collection<T> c);
? - Rohit Jain