自定义泛型类
class 类名<T,R...>{
成员
}
1.普通成员可以使用泛型
2.使用泛型的数组不能初始化
3.静态方法不能使用类的泛型
4.泛型类的类型,实在创建对象是确定的(创建对象时,需要指定确定的类型)
5.如果在创造对象没有指定类型,默认是Object
自定义泛型接口
interface 接口名<T,R...>{
}
1.接口中,静态成员不能使用泛型(默认final static)
2.泛型接口类型,在接口继承或者实现接口的时候确定
3.没有指定类型,默认objiect
自定义泛型方法
修饰符<T,R> 返回类型 方法名(参数列表){
}
public<T,R> void f(T t, R r){
}
1.泛型方法可以定义在普通类中,也可以定义在泛型类中
2.泛型被方法被调用的时候类型会被确定
3.public void f(E e){} 这种修饰符后面没有<T,R…> eat 方法不是泛型方法,而是使用了(类声明的)泛型
泛型继承和通配符
泛型没有继承性
<?>任意泛型类型
<? extends A> 支持A类及A类的子类,规定了 泛型的上限
<? super A> 支持A类以及A类的父类 ,不限直接父类,规定了泛型的下限