A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 王子鹏 中级黑马   /  2016-5-28 10:38  /  585 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

泛型
例 Iterator<Map.Entry<Person,String>> it =  tm.entrySet().iterator();

泛型: jdk 1.5 出现的安全机制  引用在集合里 集合不能指定什么类型 而泛型可以
   泛型可以定义在方法上  当方法静态时 不能访问类上定义的泛型 如果静态方法使用泛型,定义在方法上  一旦使用了泛型 变量类型不确定  不能使用具体类型的方法
好处: 1将运行时期的ClassCastexception 转到了编译时期
                2避免了强制转换的麻烦
3 使用泛型可以接受所有的类型  并且具有object类型的方法
间括号什么时候用  当操作的引用数据不确定的时候  就使用《》将哟啊操作的引用数据类型传入即可  其实《》就是一个用于接收具体引用数据类型的参数范围
在程序中只用要到带有《》的类或者接口  就要明确传入的具体引用数据类型  
引用数据类型
运行时会将泛型去掉 生成的class文件中是不带泛型的 这个称为泛型的擦除;

擦除后有补偿器  进行补偿
泛型的补偿: 在运行时 通过获取元素的类型进行转换动作  不用使用者再强制转换

自定义一个泛型类 tool< qq>{
  Private qq q;
Set() Get()
泛型方法:
泛型类:
泛型接口:

泛型的通配符:  ?  :未知类型
Public staic void show (collection<?> al){
    iterator <t> it = al.iterator();

泛型的高级应用:
泛型的限定:
上限:  <?Extends Object  E> 能接受e 类型或者 e的子类类型
一般在添加元素的时候使用上限  因为这样取出的都是按照上限类型来运算的 不会出现类型转换安全隐患
下限:  <?Extends Super  E >  接受e类型或者e类型的父类型
通常对集合中的元素进行取出操作时 可以使用下限 可以使用最高权限接收  
addAll(Collection<? Extends E > e) 将指定的collection中的所有元素都添加到此collection中

al3.ContainsAll(al2) al3中是否包含al2中的所有元素
迭代器的泛型百分之百和获取的集合的泛型一致;
您需要登录后才可以回帖 登录 | 加入黑马