Java 为什么JVM不允许编译它? 公共类集合测试mpl{ 公共静态void main(字符串[]args){ List ld1=new ArrayList(); ld1.添加(新狗()); ld1.添加(新的Cat()); 植入动物(ld1); } public void addAnimals(List
想想你的Java 为什么JVM不允许编译它? 公共类集合测试mpl{ 公共静态void main(字符串[]args){ List ld1=new ArrayList(); ld1.添加(新狗()); ld1.添加(新的Cat()); 植入动物(ld1); } public void addAnimals(List,java,Java,想想你的addAnimals()方法可以采用什么类型的List。你的泛型表明它是一个List超类型的List的Dog。因此它可能是对象的List 显然,由于它可能是一个列表,那么编译器不能保证列表中的所有内容都是动物列表公共类Dog implements Animalpublic类Cat implements Animalpublic类大象implements Animal列表 public class CollectionTestImpl { public static void m
addAnimals()
方法可以采用什么类型的List
。你的泛型表明它是一个List
超类型的List的Dog
。因此它可能是对象的List
显然,由于它可能是一个列表
,那么编译器不能保证列表中的所有内容都是动物
列表公共类Dog implements Animalpublic类Cat implements Animalpublic类大象implements Animal列表
public class CollectionTestImpl {
public static void main(String[] args){
List<Animal> ld1 = new ArrayList<Animal>();
ld1.add(new Dog());
ld1.add(new Cat());
impl.addAnimals(ld1 );
}
public void addAnimals(List<? super Dog> animals){
for (Animal animal : animals){ // this is not allowed compile error
System.out.println(animal.checkUp());
}
}
}
for (Animal animal : animals)