泛型高级(通配符):
?:表示任意类型都是可以的
? extends E:向下限定,E及其子类
? super E:向上限定,E及其父类
import java.util.ArrayList;
import java.util.Collection;
class Animal{}
class dog extends Animal{}
class cat extends Animal{}
public class test {
public static void main(String[] args) {
//泛型如果明确写的时候,前后必须一致
Collection<Object> c1=new ArrayList<Object>();
// Collection<Object> c2=new ArrayList<Animal>();
// Collection<Object> c3=new ArrayList<dog>();
// Collection<Object> c4=new ArrayList<cat>();
//?表示任意类型都是可以的
Collection<?> c5=new ArrayList<Object>();
Collection<?> c6=new ArrayList<Animal>();
Collection<?> c7=new ArrayList<dog>();
Collection<?> c8=new ArrayList<cat>();
//? extends E:向下限定,E及其子类
//Collection<? extends Animal> c9=new ArrayList<Object>();//这个是错误的
Collection<? extends Animal> c10=new ArrayList<Animal>();
Collection<? extends Animal> c11=new ArrayList<dog>();
Collection<? extends Animal> c12=new ArrayList<cat>();
//? super E:向上限定,E及其父类
Collection<? super Animal> c13=new ArrayList<Object>();
Collection<? super Animal> c14=new ArrayList<Animal>();
// Collection<? super Animal> c15=new ArrayList<dog>();//这个是错误的
// Collection<? super Animal> c16=new ArrayList<cat>();//这个是错误的
}
}