class 类名<T,R...>{//泛型标识符可以有多个
成员
}
注意细节
- 普通成员可以使用泛型
- 使用泛型的数组,不能初始化
- 静态方法中不能使用类的泛型。因为静态和类相关,在类加载时,对象还未创建。所以如果静态方法、静态属性使用了泛型,JVM无法完成初始化
- 泛型类的类型,是在创建对象时确定的(因为创建对象时,需要指定确定类型)
- 如果在创建对象时,没指定类型,默认为Object
- 使用泛型的数组,不能直接初始化(要指定类型后)。因为在new的时候不确定T的类型,无法确定开多少内存
自定义泛型接口
interface 接口名<T,R...>{
}
注意细节
- 接口中,静态成员也不能使用这个泛型(同泛型类规定)(记住 接口中的属性默认修饰符是public final static,是静态的,方法默认的修饰符是public abstract)
- 泛型接口的类型,在继承接口或实现接口时确定
- 没有指定类型就默认为Object
自定义泛型方法
修饰符<T.R..> 返回类型 方法名(参数列表){
}
注意细节
- 泛型方法,可以定义在普通类中,也可以定义在泛型类中

- 当泛型方法被调用,类型会确定
- public void eat(E e){}, 修饰符后没有<T,R..>eat方法不是泛型方法,而是使用了泛型

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