1. 泛型不具备继承性

      List list = new ArrayList0;1/对吗? 错误!!!

    2. <?>:支持任意泛型类型

    3. <? extends A>:支持A类以及A类的子类,规定了泛型的上限
    4. <? super A>:支持A类以及A类的父类,不限于直接父类,规定了泛型的下限 ```java package test;
    5. import java.util.ArrayList; import java.util.List;

      public class Main { public static void main(String[] args) {

      1. Object o = new String("xx");
      2. //泛型没有继承性
      3. //List<Object> list = new ArrayList<String>();
      4. //举例说明下面三个方法的使用
      5. List<Object> list1 = new ArrayList<>();
      6. List<String> list2 = new ArrayList<>();
      7. List<AA> list3 = new ArrayList<>();
      8. List<BB> list4 = new ArrayList<>();
      9. List<CC> list5 = new ArrayList<>();
      10. //如果是 List<?> c ,可以接受任意的泛型类型
      11. printCollection1(list1);
      12. printCollection1(list2);
      13. printCollection1(list3);
      14. printCollection1(list4);
      15. printCollection1(list5);
      16. //List<? extends AA> c: 表示 上限,可以接受 AA或者AA子类

      // printCollection2(list1);//× // printCollection2(list2);//× printCollection2(list3);//√ printCollection2(list4);//√ printCollection2(list5);//√

      1. //List<? super AA> c: 支持AA类以及AA类的父类,不限于直接父类
      2. printCollection3(list1);//√
      3. //printCollection3(list2);//×
      4. printCollection3(list3);//√
      5. //printCollection3(list4);//×
      6. //printCollection3(list5);//×
      7. }
      8. // ? extends AA 表示 上限,可以接受 AA或者AA子类
      9. public static void printCollection2(List<? extends AA> c) {
      10. for (Object object : c) {
      11. System.out.println(object);
      12. }
      13. }
      14. //说明: List<?> 表示 任意的泛型类型都可以接受
      15. public static void printCollection1(List<?> c) {
      16. for (Object object : c) { // 通配符,取出时,就是Object
      17. System.out.println(object);
      18. }
      19. }
      20. // ? super 子类类名AA:支持AA类以及AA类的父类,不限于直接父类,
      21. //规定了泛型的下限
      22. public static void printCollection3(List<? super AA> c) {
      23. for (Object object : c) {
      24. System.out.println(object);
      25. }
      26. }

      }

      class AA { }

      class BB extends AA { }

      class CC extends BB { } ```