Kir*_*ran 3 java generics collections subtyping
我是java的新手,我正在尝试从Java Generics和Collections书中理解下面的奇怪语法.(我广泛使用C++模板,因此可以声称理解泛型编程的基础知识和可能的陷阱):
interface Collection <E> {
...
public boolean addAll(Collection<? extends E> c);
...
}
Run Code Online (Sandbox Code Playgroud)
以上为什么不能写成:
interface Collection <E> {
...
public boolean addAll(Collection<T extends E> c);
...
}
Run Code Online (Sandbox Code Playgroud)
有什么不同?这只是语言限制还是引擎盖下有什么不同?
它可以写成
public <T extends E> boolean addAll(Collection<T> c)
Run Code Online (Sandbox Code Playgroud)
但没有意义.无需为该参数命名.