1. 通配符的使用

  1. /*
  2. 通配符的使用
  3. 通配符:?
  4. 类A是类B的父类,G<A>和G<B>是没关系的,二者共同的父类是:G<?>
  5. */
  6. @Test
  7. public void test3(){
  8. List<Object> list1 = null;
  9. List<String> list2 = null;
  10. List<?> list = null;
  11. list = list1;
  12. list = list2;
  13. //编译通过
  14. // print(list1);
  15. // print(list2);
  16. //
  17. List<String> list3 = new ArrayList<>();
  18. list3.add("AA");
  19. list3.add("BB");
  20. list3.add("CC");
  21. list = list3;
  22. //添加(写入):对于List<?>就不能向其内部添加数据。
  23. //除了添加null之外。
  24. // list.add("DD");
  25. // list.add('?');
  26. list.add(null);
  27. //获取(读取):允许读取数据,读取的数据类型为Object。
  28. Object o = list.get(0);
  29. System.out.println(o);
  30. }
  31. public void print(List<?> list){
  32. Iterator<?> iterator = list.iterator();
  33. while(iterator.hasNext()){
  34. Object obj = iterator.next();
  35. System.out.println(obj);
  36. }
  37. }