Java中的泛型:jdk1.5出现的安全机制。
好处:
- 将运行时期出现的问题ClassCastException转到了编译时期。
- 避免了强制转换的麻烦。
“ <>”什么时候用?
当操作的引用数据类型不确定的时候,使用“<>”。将要操作的引用数据类型传入即可。其实,“<>”就是一个用于接收具体引用数据类型的参数范围。在程序中,只要用到了带有“<>”的类或者接口,就要明确传入的具体引用数据类型。
泛型技术是给编译器使用的技术,用于编译时期,它确保了类型的安全。运行时,会将泛型去掉,生成的class文件中是不带泛型的,这称为泛型的擦除。原因是:为了兼容运行时的类加载器。然后,通过获取元素的类型进行转化动作,这叫做泛型的补偿。
泛型的通配符
泛型的通配符:?未知类型。
泛型方法与泛型类中的方法
泛型方法与泛型类没关系,泛型方法不是必须在泛型类中。
public <T> T fun(T t1){}//泛型方法
class A<T> {
public T fun(T t1){}//泛型类中的方法
}
泛型类中使用泛型
- 成员类型
- 返回值和参数类型
- 局部变量的引用上
泛型的继承和实现
class A<T>{}
class AA extends A<String>{}//AA不是泛型类
继承泛型类
- 子类不是泛型类:需要给父类传递类型常量
- 子类是泛型类:可以给父类传递类型常量,也可以传递类型变量
class A<T>{}
class AA extends A<Integer>{}//正确;子类不是泛型类