List
List
通配符:
>
通配符的读取和写入的要求:
对于list> 不能在添加数据: list.add()不行,除了添加Null之外
读取:(只能读取到Object)
有限制条件的通配符的使用:
package TongPeiFu; import org.junit.Test; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class test { @Test public void test(){ Listlist1 = null; List list2 = null; List> list = null; list = list1; list = list2; List list3 = new ArrayList<>(); list3.add("aa"); list3.add("bb"); list3.add("cc"); list = list3; } public void show(List> list){ Iterator> iterator = list.iterator(); while (iterator.hasNext()){ Object obj = iterator.next(); System.out.println(obj); } } @Test public void test2(){ List extends Person> list1 = null; List super Person> list2 = null; List list3 = null; List list4 = null; List list5 = null; // ? extends Person 此时?指Person类的子类或Person类本身,不能时Person类的父类(Object) list1 = list3; list1 = list4; // list1 = list5; // ? super Person同理; // 接受数据 list3 = new ArrayList (); list4 = new ArrayList (); list5 = new ArrayList (); list1= list4; // Student st = list1.get(0); list1的泛型是 ?extends Person的,所以最小只能用Person接收 list2 = list3; // list2 泛型结构为 super Person>只能用Object的对象接受 Object obj = list2.get(0); // 写入数据 // 对于list1来讲: 其泛型结构是Person的子类,所以不确定 // list1.add(new Student()); 不可以 // list1.add(new Person()); 不可以 // 对于list2来讲:其泛型结构是Person的父类,所以Person类及其子类都可以写入 list2.add(new Person()); list2.add(new Student()); // list2.add(new Object()); 不可以 } } class Person{} class Student extends Person{}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)