泛型

泛型

概念

类型参数,参数化的类型

比喻:标签

形式

1、泛型类、泛型接口

//语法格式
[修饰符]  class/interface  类名/接口名<类型参数列表>{
}

  多个之间使用,分割

  类型参数习惯命名

    原则:尽量见名知意,尽量是1个大写字母,或大写字母加数字

    E  Element

    K  Key

    V  Value

    T  Type

    T1,T2

    U1,U2

    R  ReturnType

  注意

    (1)泛型形参由泛型实参决定

      在使用这个泛型类时

      (1)创建对象  ArrayList<Student> list = new ArrayList<Student>();

      (2)继承类或实现接口  class Student implements Comparable<Student>

    (2)泛型实参必须指定为引用数据类型,不能是基本数据类型

    (3)泛型形参在声明它的类或接口中,当做某种已知的类型来使用的,可以用它声明属性、方法的形参类型,方法的返回值类型,方法的局部变量类型等

    (4)泛型形参不能用于

      不能作为异常的类型

      不能用于静态成员上面

    (5)泛型

      不能用于创建数组对象

2、泛型方法

//语法格式
[修饰符]  <类型参数列表>  返回值类型   方法名(形参列表)

  泛型方法可以是静态方法,也可以是非静态方法

  静态方法如果要用泛型,只能使用泛型方法的形式

  泛型方法的类型形参只适用于当前方法,和别的方法无关

  泛型方法的泛型形参由调用该方法时实参的类型决定

    此时实参,即决定了泛型方法形参的值,又决定了泛型方法形参的类型

  泛型方法的泛型形参也不能是指定为基本数据类型,可以用它的包装类,也不能用于异常类型

泛型的通配符

1、?

  代表任意类型

  如果是集合,例如ArrayList<?>,这样的集合不能添加元素

2、?  extends 父类

  ?代表父类本身或父类的子类类型可以

  如果是集合,例如ArrayList<?  extends 父类>,这样的集合不可以添加

3、?  super 子类

  ?代表子类本身或子类的父类类型可以

  如果是集合,例如ArrayList<?  super 子类>,这样的集合,可以添加,仅限于添加子类或子类的子类对象

JDK1.7的简写法

  ArrayList<String> list = new ArrayList<>();

posted @ 2023-03-06 14:47  LuckySnail  阅读(30)  评论(0)    收藏  举报