Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的泛型子类行为_Java_Generics_Core - Fatal编程技术网

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
。因此,您可以安全地将其添加到th
Dog
s和
Cat
s.@Eran-List@Eran-不能为列表类型的变量赋值
List<? extends Animal> dogs1 = new ArrayList<Dog>();
dogs1.add(new Dog());//Compilation fails