java中的泛型子类行为
嗨,我在下面的代码中有一个查询 当我宣布动物名单时,它允许我把猫()和狗()放在名单中,因为它们都是动物,满足是一种关系java中的泛型子类行为,java,generics,core,Java,Generics,Core,嗨,我在下面的代码中有一个查询 当我宣布动物名单时,它允许我把猫()和狗()放在名单中,因为它们都是动物,满足是一种关系 Class Cat extends Animal{} Class Dog extends Animal{} List<Animal> list = new ArrayList<Animal>(); list.add(new Dog());//Code works fine list.add(new Cat());//Code works fine
Class Cat extends Animal{}
Class Dog extends Animal{}
List<Animal> list = new ArrayList<Animal>();
list.add(new Dog());//Code works fine
list.add(new Cat());//Code works fine
同样的问题,为什么这里不接受狗
List<? extends Animal> dogs1 = new ArrayList<Dog>();
dogs1.add(new Dog());//Compilation fails
List类型为List的变量这肯定是重复的,有人会标记它。基本上,您的列表可以是动物的任何子类。如果它是一个列表,你将无法添加猫,反之亦然。因为Java不能分辨它是什么,所以它不允许您向它添加任何内容it@Kayaman这是一个奇怪的“重复”Mods,请检查有效的副本….:(否则不要将其标记为duplicate@Eran-一个类型为List的变量也会做同样的事情,那么为什么List工作得很好呢validations@ShowStopper不能为List
类型的变量分配List
或List
。因此,您可以安全地将其添加到thDog
s和Cat
s.@Eran-List@Eran-不能为列表类型的变量赋值
List<? extends Animal> dogs1 = new ArrayList<Dog>();
dogs1.add(new Dog());//Compilation fails