【通配符】一.通配符
1.1定义
通配符的表示形式是“ ?”,泛型中的通配符会被认为是所有泛型类型包括Object类型的父类。通配符所认定的一个取值应该是大于Object,某结构使用了泛型的通配符之后就不允许向里面添加元素了,除过null。但是可以通过get方法访问所指向的对象,返回值是Object类型。通配符在泛型机制中主要用作集合之间的赋值。
List> list4=new ArrayList<>();
list4=list;
list4.add(null);
/*
* 此处可以使用Object接收,但是不能使用Person接收
* 因为Object是所有类型的父类,此处的get是通过通配符访问的,
* 因此不知道什么类型。
*/
list4.get(0);
System.out.println();
1.2 限制性通配符
所谓限制性通配符就是规定了集合中添加元素是在某个区间之内,有两种方式:List extends A>:称为上限,表示集合中的元素必须小于等于A的类型;List super A>称为下限,表示集合中的元素的类型大于等于A的类型,为了适应多态的特点,添加元素的类型必须符合多态的特点,不能向有上限的集合中添加元素,因为不知道具体的类型是什么。可以向有下限的集合中添加元素,但是添加的添加的元素应该比下限所表示的类小。
//范围为(-无穷,Person),取值范围无法界定
List extends Person> list=null;
//左闭右开,添加的时候比Person小
List super Person> list1=null;
List