Java基础系列12: 泛型
本文是作者的读书笔记和心得整理,部分内容来源于网络,如有侵权,请联系作者。
什么是泛型
直接看例子
List arrayList = new ArrayList();
arrayList.add("aaaa");
arrayList.add(100);
for(int i = 0; i< arrayList.size();i++){
String item = (String)arrayList.get(i);
Log.d("泛型测试","item = " + item);
}
这个代码会报错,因为没有给arraylist加泛型,所以无法转换.
注意泛型是会在编译期使用,不会进入到运行期
泛型类的初始化
一个最简单的例子:
//在实例化泛型类时,必须指定T的具体类型
public class Generic<T>{
//在类中声明的泛型整个类里面都可以用,除了静态部分,因为泛型是实例化时声明的。
//静态区域的代码在编译时就已经确定,只与类相关
class A <E>{
T t;
}
//类里面的方法或类中再次声明同名泛型是允许的,并且该泛型会覆盖掉父类的同名泛型T
class B <T>{
T t;
}
//静态内部类也可以使用泛型,实例化时赋予泛型实际类型
static class C <T> {
T t;
}
public static void main(String[] args) {
//报错,不能使用T泛型,因为泛型T属于实例不属于类
// T t = null;
}
//key这个成员变量的类型为T,T的类型由外部指定
private T key;
public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定
this.key = key;
}
public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定
return key;
}
}
一个更加具体的例子:
Generic generic = new Generic("111111");
Generic generic1 &