泛型通配符
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>(); //出错
}
}