天天看点

JavaSE 泛型(泛型相关知识点总结)

目录

    • 一.泛型:
        • 1.集合中使用泛型:
        • 2.泛型的嵌套:
        • 3.总结:
    • 二.如何自定义泛型结构:
        • 1.泛型类:
            • (1).继承中的泛型类:
        • 2.泛型方法:
    • 三.自定义泛型注意点:
    • 四.泛型在继承方面的体现:

一.泛型:

JDK5.0的新特性

1.集合中使用泛型:

JavaSE 泛型(泛型相关知识点总结)

2.泛型的嵌套:

JavaSE 泛型(泛型相关知识点总结)

3.总结:

  1. 集合接口或集合类在jdk5.0时都修改为带泛型的结构。
  2. 在实例化集合类时,可以指明具体的泛型类型
  3. 指明完以后,在集合类或集合中凡是定义类或接口时,内部结构 (方法,属性,构造器) 使用到类的位置,都指定为实例化的泛型类型。比如:add(E e) ----> 实例化以后:add(Integer e)
  4. 注意点:泛型的类型必须是一个类,不能是基本数据类型。需要用到基本数据类型的位置,拿包装类替换。
  5. 如果实例化时,没有指明泛型的类型。默认类型为java.lang.object类型。

二.如何自定义泛型结构:

1.泛型类:

JavaSE 泛型(泛型相关知识点总结)

(1).继承中的泛型类:

继承中直接指明泛型的类型:

JavaSE 泛型(泛型相关知识点总结)

继承中继承父类中的泛型:

JavaSE 泛型(泛型相关知识点总结)

2.泛型方法:

在泛型的方法中出现了泛型的结构,泛型的参数与类的泛型的参数没有任何关系。

泛型所属的类是不是泛型了没有关系。

JavaSE 泛型(泛型相关知识点总结)

以下两个方法均不是泛型方法:

JavaSE 泛型(泛型相关知识点总结)
JavaSE 泛型(泛型相关知识点总结)

三.自定义泛型注意点:

  1. 在静态方法中不能使用类的泛型
  2. 异常类不能声明泛型
  3. 泛型方法可以声明为静态的。原因:泛型参数是在调用方法时确定的,并非在实例化时确定。

四.泛型在继承方面的体现:

JavaSE 泛型(泛型相关知识点总结)
类A是类B的父类,G<A> 和 G<B>二者不具有子父类关系,二者是并列关系。编译不会通过。
           
JavaSE 泛型(泛型相关知识点总结)
类A是类B的父类,A<G> 是 B<B> 的父类