这些之间有什么区别?
public <T extends MyClass> void myMethod (ArrayList<T> list) {
}
public void myMethod (ArrayList<? extends MyClass> list) {
}
答案 0 :(得分:3)
<T extends MyClass>
MyClass
的{strong>特定子类型,称为T
。 T
。例如,您可以将列表中的元素分配给T
类型的新变量。 <? extends MyClass>
MyClass
的整个子类型。在编译时,确切的替代是 unknown ,因此无法引用,也不能引入这种类型的新变量。MyClass
类型的变量。某些特定子类型MyClass
可能需要额外的缩放。答案 1 :(得分:2)
在第一种情况下,您可以将T
称为MyClass或子类的类型。
在第二种情况下,T
可以是您在此方法之外定义的内容(如果您没有名为T的类型,则没有任何内容)