第十九章 泛型

19.1 概述
规定了集合内元素引用数据类型
提高安全性,eg:
ArrayList<String> al = new ArrayList<String>(); 
好处:
1)将运行时异常ClassCastException转到了编译时
2)避免了强制转换

19.2 擦除与补偿
java文件变异后生成的class文件中不含泛型。这一动作称为泛型的擦除。为了兼容运行的类加载器。
在运行时,通过获取元素的类型进行转换动作,不需要使用者强制转换,称为泛型的补偿。

19.3 泛型类
使用泛型来接收类中要操作的引用数据类型。
当此引用数据类型不确定的时候,使用泛型来表示。
class tool<T> {}

19.4 泛型方法
泛型定义在方法上
public <T> void function (T t){}
静态方法不能访问类上定义的泛型。 

19.5 泛型接口
interface Inter<T>{
public void function(T t);
}
//可以使用具体类型实现
class InterImpl1 implements Inter<String>{
public void function(String str){
}
}
//也可以继续使用泛型实现
class InterImpl2 implements Inter<Q>{
public void function(Q q{
}
}



19.6 泛型限定
泛型的通配符 ?
function(Collection<?>){}
<? extends T> 接收T类型或者E的子类型对象(上限)
<? super T> 接收T类型或者T的父类型对象(下限)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值