Java泛型总结与思考

总结:泛型就是将运行时的转换异常提前到了编译时检测异常
在泛型类、泛型接口、泛型方法中,对于声明的泛型 E,我们可以把它当作一个真实存在的类,可以在参数,返回值中自由的使用E,只是不能创建E的对象,因为E是假想的类。在源文件编译后E会被替换成其父类,泛型类、泛型接口、泛型方法成为原生态类型(不存在泛型)。
在泛型类、泛型接口、泛型方法的使用中,对于真实的E 需要在编译时根据指定的具体类确定,之后在 调用具有泛型的方法上进行静态参数匹配检测与返回强转。然后擦除泛型信息,所以在运行时,所有的泛型对象都会转化成原生态类型,不存在泛型信息

注意点:不能创建 E List<E> List<String> 的泛型数组,可以使用List代替数组。至于为什么,因为Java中数组是协变可以具体化的,而泛型是可变可擦除的。两者混用会出现差错,从而违背泛型的设计理念:只要在程序中正确使用泛型,在编译时没有异常,就不会在运行时出现类型转化异常。
至于具体的例子,可以参考《Effective java》 p109

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值