码迷,mamicode.com
首页 > 编程语言 > 详细

Java 泛型 Java使用泛型的意义

时间:2016-09-07 22:56:28      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

Java 泛型 Java使用泛型的意义

@author ixenos

 

 

直接意义


在编译时保证类型安全

 

根本意义


a) 类型安全问题源自可复用性代码的设计,泛型保证了类型安全的复用模板

b) 使用复用性模板时不用手动强制类型转换

 

三种泛型实现方式的优缺点


  • C++:模板方式实现,在编译时完全展开并且支持偏特化,类型精度高,代码共享差;
  • Java 5:擦除方式实现,仅用于编译时类型检查,在运行时擦除,向后兼容性好,代码共享好,类型精度非常差;
  • C# 2.0:混合方式实现,在运行时展开特化,类型精度高,代码共享还行。

 

  • 模板方式就是对应每一种类型都生成特定的模板,一个泛型类将有多个模板
  • 擦除方式就是对应所有泛型类型信息在编译时擦除,一个泛型类只有一个模板

 

  Q:Java为什么采用类型擦除?

  A:为了向后兼容(指二进制层面的向后兼容性,而非源码上的)

 

 

 

 

具体请参考:Reifiable generics与Type erasure generics各有怎样的优点与缺点?

      Java不能实现真正泛型的原因?

      java 泛型擦除发生在哪个阶段,如何用反编译工具查看泛型擦除后的代码?

 

Java 泛型 Java使用泛型的意义

标签:

原文地址:http://www.cnblogs.com/ixenos/p/5851155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!