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

Java泛型 VS C#泛型 (伪泛型 VS 真泛型)

时间:2017-06-25 13:18:02      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:强制   小结   引用   font   获取   应用   文件类型   保存   参数   

一、泛型的本质

泛型是参数化类型的应用,操作的数据类型不限定于特定类型,可以根据实际需要设置不同的数据类型,以实现代码复用。

二、Java泛型

Java 泛型是Java1.5新增的特性,JVM并不支持。

实现原理:Java源代码里面类型提供实现泛型功能,而编译后Class文件类型就变成原生类型(即类型被擦除掉),而在引用处插入强制类型转换以实现JVM对泛型的支持。本质是Java泛型只是Java提供的一个语法糖,底层

的JVM并不提供支持,Java中的泛型属于伪泛型。

但是编译后的字节码通过反射后还是可以获取到泛型的真实类型信息,因为泛型擦除并没有把保存泛型元数据擦除掉。

 

三、C#泛型

C# 泛型是2.0C#和CLR中新增的特性,CLR支持。

实现原理:C#无论语言层面还是CLR都提供对泛型的支持,所以C#泛型编译后MSIL泛型都是切实存在的,类型不没有变成原生类型,而是通过类型膨胀实现,在运行期生成,自己的虚方法表和类型数据.C#泛型属于

 

四、小结

Java泛型 VS C#泛型 (伪泛型 VS 真泛型)

标签:强制   小结   引用   font   获取   应用   文件类型   保存   参数   

原文地址:http://www.cnblogs.com/wshcn/p/7076547.html

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