泛型 --- 萬用字元和有條件萬用字元的使用
阿新 • • 發佈:2021-01-09
1. 萬用字元的使用
-
類A是類B的父類,G和G是沒有關係的,二者共同的父類時:G<?>
List<Object> list1=null; List<String> list2=null; List<?> list=null; list=list1; list=list2; dayin(list1); dayin(list2) } public static void dayin(List<?> list){ Iterator<
-
對於List<?>就無法向其內部新增資料,除了新增null之外
List<String> list3=new ArrayList<>(); list3.add("AA"); list3.add("bb"); list3.add("cc"
-
允許讀取資料,讀取的資料型別為Object!
//讀取 Object o = list.get(0); System.out.println(o);
2. 有限制條件的萬用字元的使用
-
G<? extends A>:
可以作為G和G的子類,其中B是A的子類
-
G<? Super A>:
可以作為G和G的父類,其中B是A的父類
List<? extends Person>list1=null; List<? super Person>list2=null;
-
extends相當於≤,super相當於≥
List<? extends Person>list1=null; List<? super Person>list2=null; List<Student> list3=null; List<Person> list4=null; List<Object> list5=null; //讀取資料 list1=list3; Person person = list1.get(0); list2=list4; Object object = list2.get(0); //寫入資料 //list1.add(new Person()); //編譯不通過 //可以編譯 list2.add(new Person()); list2.add(new Student());