JAVA高階複習-泛型萬用字元的使用
阿新 • • 發佈:2020-09-14
一、類A 是 類B的父類,G 和 G是沒有關係的,二者共同的父類是:G<?>
二、新增(寫入)對於List<?>不能向其內部新增資料,除了新增null;
三、獲取(讀取)對於List<?>允許讀取資料,讀取的資料型別為Object
/** * 萬用字元的使用 * 萬用字元:? */ public class GenericTest7 { /** * 類A 是 類B的父類,G<A> 和 G<B>是沒有關係的,二者共同的父類是:G<?> */ @Test public void test01() { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); List<String> list2 = new ArrayList<>(); list2.add("hi"); list2.add("hello"); List<Object> list3 = new ArrayList<>(); list3.add(1); list3.add("bye"); showList(list); showList(list2); showList(list3); List<?> listFather = null; listFather = list; listFather = list2; listFather = list3; } private void showList(List<?> list) { for (int i = 0; i < list.size(); i++) { Object obj = list.get(i); System.out.println(obj); } } @Test public void test02() { List<String> list = new ArrayList<>(); list.add("AA"); list.add("BB"); List<?> listFather = null; listFather = list; //報錯:add (capture<?>) in List cannot be applied to (java.lang.String) //結論:新增(寫入)對於List<?>不能向其內部新增資料,除了新增null; //listFather.add("DD"); listFather.add(null); //結論:獲取(讀取)對於List<?>允許讀取資料,讀取的資料型別為Object Object obj = listFather.get(0); System.out.println(obj); } }