泛型的作用及其基本概念

转自  http://www.cnblogs.com/justinli/p/generic.html


一、泛型的基本概念

        java与C#一样,都存在泛型的概念,及类型的参数化。java中的泛型是在jdk1.5以后出现的。java中泛型与C#中的泛型是有本质区别的: 首先从集合类型上来说,java中的ArrayList<Integer>和ArrayList<String>是同一个类型,在编译时会执行类型檫除,即java中的类型是伪泛型;其次,对于向集合中添加基本类型的数据时,例如int,会首先将int转换成Integer对象,即我们通常所说的装箱操作,在取出元素的时候需要将Integer对象转换成int值类型,即拆箱操作。而在C#中,List<int>和List<String>是不同的泛型,泛型参数在编译后会是一个占位符,并没有被檫除,在运行时被赋予真正的类型,它们在系统运行期生成,有自己的虚方法表和类型数据,这种实现成为类型膨胀(针对类型膨胀,即时编译器已经做了很多优化工作来解决这一问题),这就是所谓的真泛型,与此同时,在对集合中添加基本类型如int时,不需要装箱操作,取出元素时不需要拆箱操作,因此,性能上较java的集合泛型要好。


二、为什么使用泛型

        java中泛型的引入主要为了解决两个问题:

                1、集合类型元素在运行时出现类型转换异常,增加编译时的类型检查;

                2、解决重复代码的编码,能够复用算法;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值