Java中泛型的本质
来源:互联网 发布:sap 工厂物料组主数据 编辑:程序博客网 时间:2024/06/10 21:32
http://pengcqu.iteye.com/blog/504630
Java中泛型的本质
泛型在Java中经常用到。泛型在本质上是指类型参数化。所谓类型参数化,是指用来声明数据的类型本身,也是可以改变的,它由实际参数来决定。在一般情况下,实际参数决定了形式参数的值。而类型参数化,则是实际参数的类型决定了形式参数的类型。
举个简单的例子。方法max()要求返回两个参数中较大的那个,可以写成:
Java代码
- Integer max(Integer a, Integer b){
- return a>b?a:b;
- }
这样编写代码当然没有问题。不过,如果需要比较的不是Integer类型,而是Double或是Float类型,那么就需要另外再写max()方法。参数有多少种类型,就要写多少个max()方法。但是无论怎么改变参数的类型,实际上max()方法体内部的代码并不需要改变。如果有一种机制,能够在编写max()方法时,不必确定参数a和b的数据类型,而等到调用的时候再来确定这两个参数的数据类型,那么只需要编写一个max()就可以了,这将大大降低程序员编程的工作量。
在C++中,提供了函数模板和类模板来实现这一功能。而从JDK1.5开始,也提供了类似的机制:泛型。从形式上看,泛型和C++的模板很相似,但它们是采用完全不同的技术来实现的。
在泛型出现之前,Java的程序员可以采用一种变通的办法:将参数的类型均声明为Object类型。由于Object类是所有类的父类,所以它可以指向任何类对象,但这样做不能保证类型安全。
泛型则弥补了上述做法所缺乏的类型安全,也简化了过程,不必显示地在Object与实际操作的数据类型之间进行强制转换。通过泛型,所有的强制类型转换都是自动和隐式的。因此,泛型扩展了重复使用代码的能力,而且既安全又简单。
阅读全文
0 0
- JAVA中泛型的本质
- Java中泛型的本质
- java中泛型的本质
- Java中泛型的本质
- C#和java中泛型的本质区别
- Java线程中断的本质
- Java中enum的本质
- 数组的本质(Java)
- JAVA实例化的本质
- Java面向对象的本质
- JAVA、OC的内存管理机制的本质
- Java语言接口与继承的本质
- java中将对象作为参数的本质
- 方法学之Java的本质
- Java中断的本质与分析
- Java中static块的本质
- 引用的本质是什么(c++,c#,java)?
- java中将对象作为参数的本质
- 线程安全与可重入函数之间的区别
- Jstl 标签库
- oracle查看数据库名、数据库实例名和db link
- Hibernate中Criteria的用法
- 每天30分钟,轻松学会Python-part1
- Java中泛型的本质
- 最长公共子串-LintCode
- 编译安装apache
- 求一个函数返回参数的二进制中1的个数
- 增量/差量更新 编译生成so库
- Ext.encode 与 Ext.decode_爱胖迪
- HTML&CSS基础篇之二:HTML应用定位
- iOS 关键字 及 泛型的使用 和 协变、逆变
- CSR BC5 Bluetooth auto reconnect fail issue debug