介绍
泛型是jdk5的时候出现的一种特性,可以在编译阶段约束操作的数据结构,并进行检查。
泛型只能用引用数据类型,如果是基本数据类型得使用包装类。
如ArrayList中的toArray(T[] a),是不可用转换为int[]的只能转换为Integer[]
好处
统一了数据类型,把运行时期的问题提前到了编译时期,避免强制转换可能出现异常
不过java的泛型是伪泛型,在编译成字节码后会进行编译的擦除
为了jdk5以前软件的兼容
使用
可以写在类、接口上,也可以写在方法上
确定泛型后,可以传递数据的子类。但是不能
类
修饰符 class 类名<类型>{
}
方法
在方法定义的只能在本方法使用泛型
修饰符 <T> 返回值类型 方法名(<T> a){
}
接口
实现的泛型接口的实现类,可以明确类型也可以不明确
明确类型的
也可以不明确
继承
泛型(上面的类接口和方法)是没有继承性的,数据是可以的。
如果一个方法调用了ArrayList< Object>参数
则是不可用ArrayList< Integer>。
而ArrayList< Object>是可以加入Integer数据的
通配符
?代表所有类型
? extend/super E E和其子类/父类
不过一旦定好了类就不可用加其他类型了,即使是子类。