Java和C#的泛型比较_Java和C#的泛型有什么区别
2014-08-23 11:04:30  By: shinyuu

C#的泛型:


C#泛型类在编译时,先生成中间代码IL,通用类型T只是一个占位符

在实例化类时,根据用户指定的数据类型代替T并由即时编译器(JIT)生成本地代码

这个本地代码中已经使用了实际的数据类型,等同于用实际类型写的类

所以不同的封闭类的本地代码是不一样的

按照这个原理,我们可以这样认为:


泛型类的不同的封闭类是分别不同的数据类型



java的泛型


对java虚拟机来说是没有泛型类的

java编译器在编译泛型类是会用泛型类的左边第一个限定类去替换

eg: ArrayList<T extend a & b>

编译后ArrayList的所以T会被a 去替换

但put数据是、编译器会检查put的数据是不是a类型的

但get数据时、他会返回a类型的数据.并添加类型转换代码(这样效率就低了)

eg: ArrayList<News> arrayList=new ...; arrayList.get(0);

编译器会返回 a类型的数据、然后把 数据转换成News数据

总之java没有泛型类、在编译后都是基本的类型、并加类类型转换

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+