如果这种类型应该能够添加 Apple 的任何超类型,为什么不能将新对象添加到列表中?
import java.util.List;
import java.util.ArrayList;
class Apple{}
public class Macintosh extends Apple {
public static void main(String[] munch){
List<Apple> a = new ArrayList<Apple>();
basket(a);
}
static void basket(List<? super Apple> list){ list.add(new Object());}
}
如果我们将参数更改为 List 列表,它当然可以工作:s
class Animal{}
class Dog extends Animal{}
class Cat extends Animal{}
public class Mixer<A extends Animal>{
public <C extends Cat> Mixer<? super Dog> useMe(A a, C c){
return new Mixer<Animal>();
}
}
如果以前编译器不知道对象的Class,为什么我们可以在返回时使用Mixer,现在是因为是一个类?¿?