泛型 顾名思义就是泛指的类型,就是参数化类型,我们知道 方法的参数可以参数化 类的类型和接口的方法返回类型也可以参数化,等到程序编译运行的时候再确定也是可以的
泛型类 方法
复制代码
//此处T可以随便写为任意标识,常见的如T、E、K、V等形式的参数常用于表示泛型
//在实例化泛型类时,必须指定T的具体类型
public class Generic<T>{
//key这个成员变量的类型为T,T的类型由外部指定
private T key;
public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定
this.key = key;
}
public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定
return key;
}
}
泛型接口
//定义一个泛型接口
public interface Generator<T> {
public T next();
}
泛型上下边界
在使用泛型的时候,我们还可以为传入的泛型类型实参进行上下边界的限制,如:类型实参只准传入某种类型的父类或某种类型的子类。
public void showKeyValue1(Generic<? extends Number> obj){
Log.d("泛型测试","key value is " + obj.getKey());
}
由于JVM泛型的擦除机制,在运行时JVM是不知道泛型信息的