1. public class TestGeneric<E> {
    2. //不是泛型方法 (不能是静态方法)
    3. public static void a(E e){
    4. }
    5. //是泛型方法
    6. public static <T> void b(T t){
    7. }
    8. }

    泛型参数存在继承呢个关系的情况
    image.png
    通配符

    1. public class Demo {
    2. //这是main方法,程序的入口
    3. public static void main(String[] args) {
    4. List<Object> list1 = new ArrayList<>();
    5. List<String> list2 = new ArrayList<>();
    6. List<Integer> list3 = new ArrayList<>();
    7. List<?> list = null;
    8. list = list1;
    9. list = list2;
    10. list = list3;
    11. }
    12. }

    A 和 B是子类父类的关系,G和G不存在子类父类关系,是并列的
    加入通配符?后,G<?>就变成了 G
    和G的父类

    1. public class Test {
    2. /*public void a(List<Object> list){
    3. }
    4. public void a(List<String> list){
    5. }
    6. public void a(List<Integer> list){
    7. }*/
    8. public void a(List<?> list){
    9. //内部遍历的时候用Object即可,不用?
    10. for(Object a:list){
    11. System.out.println(a);
    12. }
    13. }
    14. }
    15. class T{
    16. //这是main方法,程序的入口
    17. public static void main(String[] args) {
    18. Test t = new Test();
    19. t.a(new ArrayList<Integer>());
    20. t.a(new ArrayList<String>());
    21. t.a(new ArrayList<Object>());
    22. }
    23. }
    1. public class Test {
    2. public void a(List<?> list){
    3. //1.遍历:
    4. for(Object a:list){
    5. System.out.println(a);
    6. }
    7. //2.数据的写入操作 :
    8. //list.add("abc");-->出错,不能随意的添加数据
    9. list.add(null);
    10. //3.数据的读取操作:
    11. Object s = list.get(0);
    12. }
    13. }
    14. class T{
    15. //这是main方法,程序的入口
    16. public static void main(String[] args) {
    17. Test t = new Test();
    18. t.a(new ArrayList<Integer>());
    19. t.a(new ArrayList<String>());
    20. t.a(new ArrayList<Object>());
    21. }
    22. }