自定义泛型类

class 类名<T,R...>{//泛型标识符可以有多个 成员 } 注意细节

  1. 普通成员可以使用泛型
  2. 使用泛型的数组,不能初始化
  3. 静态方法中不能使用类的泛型。因为静态和类相关,在类加载时,对象还未创建。所以如果静态方法、静态属性使用了泛型,JVM无法完成初始化
  4. 泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)
  5. 如果在创建对象时,没指定类型,默认为Object
  6. 使用泛型的数组,不能直接初始化(要指定类型后)。因为在new的时候不确定T的类型,无法确定开多少内存

自定义泛型接口

interface 接口名<T,R...>{

} 注意细节

  1. 接口中,静态成员也不能使用这个泛型(同泛型类规定)(记住 接口中的属性默认修饰符是public final static,是静态的,方法默认的修饰符是public abstract)
  2. 泛型接口的类型,在继承接口或实现接口时确定
  3. 没有指定类型就默认为Object

自定义泛型方法

修饰符<T.R..> 返回类型 方法名(参数列表){

} 注意细节

  1. 泛型方法,可以定义在普通类中,也可以定义在泛型类中 alt text alt text
  2. 当泛型方法被调用,类型会确定
  3. public void eat(E e){}, 修饰符后没有<T,R..>eat方法不是泛型方法,而是使用了泛型 alt text

本文章使用limfx的vscode插件快速发布