如果我已正确理解泛型,则声明为 super T>参数的方法将接受任何类型为T或超类型T的任何引用。我试图用下面的代码来测试它,但编译器不喜欢它。
class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
class ZiggyTest2{
public static void main(String[] args){
List anim2 = new ArrayList();
anim2.add(new Animal());
anim2.add(new Dog());
anim2.add(new Cat());
testMethod(anim2);
}
public static void testMethod(ArrayList super Dog> anim){
System.out.println("In TestMethod");
anim.add(new Dog());
//anim.add(new Animal());
}
}编译器错误是:
ZiggyTest2.java:16: testMethod(java.util.ArrayList super Dog>) in ZiggyTest2 cannot be applied to (java.util.List)
testMethod(anim2);
^
1 error我不明白为什么我不能通过anim2,因为它的类型是,Animal是超级类型的狗。
谢谢