泛型通配符

来源:互联网 发布:马来西亚海关数据 编辑:程序博客网 时间:2024/05/17 22:09

泛型通配符

import java.util.ArrayList;

import java.util.Collection;

 

/*

 * 泛型高级(通配符)

 * ?:

 * ? extends E:

 * ? super E:

 *

 * */

 

class Animal{}

class Dog extendsAnimal{}

classCat extendsAnimal{}

 

public classGenericDemo {

 

    public static void main(String[] args) {

        // TODO Auto-generated method stub

 

        //泛型如果是明确的写的时候,前后必须一致

        Collection<Object>c1 = newArrayList<Object>();

//      Collection<Object>c2 = new ArrayList<Animal>();  //出错

//      Collection<Object>c3 = new ArrayList<Dog>();  //出错

//      Collection<Object>c4 = new ArrayList<Cat>();  //出错

       

        //?表示任意的类型都是可以的

        Collection<?>c5 = newArrayList<Object>(); //正确

        Collection<?>c6 = newArrayList<Object>(); //正确

        Collection<?>c7 = newArrayList<Object>(); //正确

        Collection<?>c8 = newArrayList<Object>(); //正确

       

        //? extends E:向下限定,E及其子类

//      Collection<?extends Animal> c9 = new ArrayList<Object>();  //出错

        Collection<?extendsAnimal>c10 = new ArrayList<Animal>(); //正确

        Collection<?extendsAnimal>c11 = new ArrayList<Dog>(); //正确

        Collection<?extendsAnimal>c12 = new ArrayList<Cat>(); //正确

       

        //? super E:向上限定,E及其父类

        Collection<?superAnimal>c13 = new ArrayList<Object>(); //正确

        Collection<?superAnimal>c14 = new ArrayList<Animal>(); //正确

    //  Collection<?super Animal> c15 = new ArrayList<Dog>();  //出错

    //  Collection<?super Animal> c16 = new ArrayList<Cat>();  //出错

    }

}

0 0