我是 Java 的新手,正在尝试从 Java 泛型和集合一书中理解以下奇怪的语法。(我广泛使用 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)
但是没有意义。无需为该参数命名。
关于java - "? extends E"和 "T extends E"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14943181/