Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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_Collections - Fatal编程技术网

JAVA泛型边界混淆

JAVA泛型边界混淆,java,generics,collections,Java,Generics,Collections,我试图遵循oracle文档中关于集合中泛型、上界和下界的说明,但这会造成混乱。。作为 import java.util.ArrayList; import java.util.List; public class Test2 { public static void main(String[] args) { List<Dog> dogList = new ArrayList<>(); dogList.add(new Dog()

我试图遵循oracle文档中关于集合中泛型、上界和下界的说明,但这会造成混乱。。作为

import java.util.ArrayList;
import java.util.List;

public class Test2 {

    public static void main(String[] args) {


       List<Dog> dogList = new ArrayList<>();
       dogList.add(new Dog());
       dogList.add(new Dog());

       List<Cat> catList = new ArrayList<>();
       catList.add(new Cat());
       catList.add(new Cat());

       List<Entity> entList = new ArrayList<>();
       entList.add(new Entity());
       entList.add(new Entity());

       print(dogList);
       print(catList);
       print1(entList);


    }

    public static  void print(List<? extends Animal> animals){

        for(Animal an : animals){
            System.out.println(an);
        }
    }

    public static  void print1(List<? super Animal> animals){
        animals.add(new Animal());
        animals.add(new Dog());
        for(Object an : animals){
            System.out.println(an);
        }
    }
}
class Entity {}
class Animal extends Entity{}
class Dog extends Animal {}
class Cat extends Animal {}
import java.util.ArrayList;
导入java.util.List;
公共类Test2{
公共静态void main(字符串[]args){
List dogList=new ArrayList();
添加(新狗());
添加(新狗());
List catList=new ArrayList();
catList.add(新的Cat());
catList.add(新的Cat());
List entList=new ArrayList();
添加(新实体());
添加(新实体());
打印(狗名单);
打印(catList);
print1(entList);
}

publicstaticvoidprint(List
List是通配符,是通用的,但是为什么
ListList
    List<Object> objList = new ArrayList<>();
    objList.add(new Dog());
    objList.add(new Animal());
    objList.add(new Entity());
    objList.add(new Object());
    print1(objList);