JAVA泛型和通配符

Java泛型转化的事实:

  • 虚拟机中没有泛型,只有普通的类和方法。
  • 所有的类型参数都用他们的限定类型替换。
  • 桥方法被合成用来保证多态。
  • 为了保证类型安全性,必要时插入强制类型装换。
  • 不能用基本类型(如:double)实例化类型参数,也就是只能有Pair<Double>,不能有Pair<double>
  • 运行时类型查询只适用于原始类型,也就是说类型查询只产生原始类型,
    Pair<String> mm=new Pair<String>();
    Pair<Employee> employ=new Pair<Employee>();
    if(mm instanceof Pair<String>)//ERROR
    if(mm instanceof Pair)//RIGHT
    if(mm.getClass()==employ.getClass())//they are equal
    其比较结果都是true ,这是因为两次调用getClass()都返回Pair.class
  • 不能创建参数化类型的数组
Pair<String>[] table=new Pair<String>[10];//ERROR

JDK1.5的新特性:自动装包/拆包(Autoboxing/unboxing)

  自动装包/拆包大大方便了基本类型数据和它们包装类地使用。

  自动装包:基本类型自动转为包装类.(int >> Integer)

  自动拆包:包装类自动转为基本类型.(Integer >> int)

  在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制
解决了我们的问题。

int a = 3;
Collection c = new ArrayList();
c.add(a);//自动转换成Integer.

Integer b = new Integer(2);
c.add(b + 2);

  这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer.

通配符

  1. 带有超类的通配符可以向泛型对象写入,带有子类型限定的通配符可以从泛型对象读取。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值