1、 java 范型的实现原理: Java 语言中的泛型基本上完全在编译器中实现,由编译器执行类型检查和类型推断,然后生成普通的非泛型的字节码。这种实现技术称为擦除( erasure )(编译器使用泛型类型信息保证类型安全,然后在生成字节码之前将其清除),所以说其实 java 的所谓的范型知识形式上的,仅仅是在编译期做了手脚,生成了一些标明范型的变量,应为这些都是编译期的行为,那么引用 buaawhl 的一句话就是说: java 只能支持 Field, Method 的 generic type 信息,这些信息存放在 class 文件的 contant pool 中,作为字符串常量出现,标志是 signature 。
2、 由于 Java 范型的实现采用的是 Erasure 方式,仅仅是在编译期进行检查,所以在运行过程中我们就不能进行范型的实例化,因为我们不知道到底要实例化什么类型的对象,与原来我们手动进行强制类型转换的一样,我们如果知道我们能够转换成什么对象,那么我们就可以将我们知道的类型的信息传递过去,也就是吧 XX.class 传递过去,这样 jvm 就知道我们要实例化什么样的对象了。
3、 原来 Class<T> 表示的是一个范型的 Class 类啊,为什么搞的像 List<T> 样式的范型声明呢?搞得我迷糊了好长时间,一致以为是一个类似容器的东西呢,这个语法感觉到有些奇怪,见笑了:),这个类一般用来接受 XX.class 返回的对象。
4、 要想在 java 中范型用得爽,还得配合使用反射才行啊。由于 Java 采用了擦拭法进行范型的支持,所以我们依旧不能在运行期获取到具体的类型的信息,而至能够在我们进行设计的时候对其类型信息进行指定,那么我们指定的类型的信息就可以存放在编译后生成的 class 文件中了,我们可以通过反射来获取到具体的存放的信息,要获取到动态的传入的信息就不行了。
如下所示:
定义一个超类:
再定义一个子类: <!----> <o:p> </o:p>
<o:p> </o:p>
那么我们只能够获得我们实现定义好的要传入到 SuperClass 类中的 Integer 类型的范型信息,而不能得到我们在程序中传入的 类的类型信息,因为 java 范型的信息不记录的实例中,仅仅在类中进行了记录(这点感觉 java 的范型还不够成熟,可能因为要向后兼容等原因吧)。
参考资料:
http://www.duduwolf.com/wiki/2006/51.html
http://calvin.iteye.com/blog/33139 白衣的 SpringSide 中对范型使用的说明
http://www-128.ibm.com/developerworks/cn/java/j-jtp01255.html Java 理论和实践关于范型的讲解
http://www.nirvanastudio.org/java/dont-repeat-the-dao.html 范型实现可重用 DAO 的文章
http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/lang/reflect/ParameterizedType.html#getActualTypeArguments()
http://buaawhl.iteye.com/blog/22020 范型的实现原理,讲的比较清楚
您还没有登录,请您登录后再发表评论
1.8 单根继承结构 1.9 容器 1.9.1 参数化类型(范型) 1.10 对象的创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第...
### Genetic Programming范型编程 #### 一、引言与概览 遗传编程(Genetic Programming, GP)是一种基于自然选择原理的自动编程方法,它属于进化计算领域的一部分。该技术利用了生物进化的机制来自动地创建计算机...
迁移工作流范型是近年来工作流研究的新方向。根据迁移工作流管理系统框架,以移动Agent技术为基础,采用Java为开发语言,开发了迁移工作流管理系统原型Migflow。描述了Migflow的内部结构,给出了实现方案,并对迁移...
面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计范型,它将现实世界中的事物抽象为程序中的对象,通过对象之间的交互来实现程序的功能。在Java中,面向对象主要体现在类、对象、封装、继承和...
吉林大学博士学位论文 关键词:软件重构方法;软件维护;程序转换;行为保留;程序结构改善;...Java语言接口;面向方面范型;横切关注点;方面挖掘; 静态模型;动态模型;逆向软件工程;对象状态模型.
综上所述,网格GIS的研究涉及了GIS体系结构设计、Java网络通信、XML文档处理、空间数据库设计等多个IT领域知识。它的实现需要综合利用各种技术,包括但不限于Java编程、XML技术、数据库技术、网络通信协议等,从而...
在2001年2月,Sun公司宣布了Java网络技术中的一种创新性的范型:JXTA。倡导者是BillJoy,他是Sun公司的主要技术革新者。JXTA提供了一种革命性的框架,允许Java程序员利用新的点对点(P2P)网络协议,勿须考虑底层的...
本文主要探讨了分布式计算的十大范型中的分布式对象模型,以及在此模型下的一些关键技术,如远程方法调用(RMI)、对象请求代理(ORB)和构件技术。 远程方法调用(RMI)是Java平台上的一个重要特性,它使得一个...
1.9.1 参数化类型(范型) 1.10 对象的创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第2章 一切都是对象 2.1 用...
尤其在使用JavaScript的开发者群体里,深入了解该语言的本来就不多,研究语言特性的就更少了。 《JavaScript语言精髓与编程实践》精选版从JavaScript 无关的角度综论这些语言的产生发展,以及特性的概要。作为纯...
在《分布式系统原理与范型》这本书中,作者可能详细介绍了分布式系统的特征,如透明性、一致性、容错性、可扩展性和性能优化等。这些特性对于理解分布式系统的设计目标至关重要。 分布式系统的核心概念包括数据复制...
尤其在使用JavaScript的开发者群体里,深入了解该语言的本来就不多,研究语言特性的就更少了。 本迷你书摘引了《JavaScript语言精髓与编程实践》一书有关语言讨论的关键章节(主要在第三、四、五章),从JavaScript...
本书不依赖于具体的程序设计语言(必要的代码示例用Java给出),并采用统一建模语言(UML)的子集来为软件建模,解释学生工作中需要用到的符号。 本书为学生而写,可作为计算机专业本科生、非计算机专业研究生的软件...
5. **程序设计语言范型**: 不同的程序设计语言有不同的范型,如面向过程、面向对象、函数式和声明式等。这些范型反映了不同的编程思想和设计模式,影响着编译程序的实现方式和优化策略。 6. **编译程序的意义**:...
CurlCurl是由美国国防部高级研究项目代理资助,马萨诸塞州科技学院的David A. Kranz开发的Web开发语言, HTML语言的创建者Tim Berners-Lee也参与其中,并扮演了重要的角色。 Curl语言是一种编程语言,它被设计...
这是80/20范型的一个很好的例子——甚至更进一步可以是90/10范型。您用所谓的数据挖掘专家的10%的专业知识就能创建具有90%效力的数据挖掘模型。而为了补上模型剩下的10%的效力并创建一个完美的模型将需要90%额外的...
书中强调了应用层的范型和编程接口,帮助读者在实际中能够快速学习和实现各种应用程序中的协议。随后,通过自顶向下的方法分析网络体系结构,让读者能够专注于网络所提供的服务内容,而不是仅仅停留在网络协议的抽象...
D语言起源于C++,但并非C++的简单扩展或变种,它重新设计了C++的特性并吸收了Java、C#、Eiffel等其他语言的元素。D语言由沃尔特·布莱特(Walter Bright)和安德烈·亚历山德雷斯库(Andrei Alexandrescu)共同开发...
相关推荐
1.8 单根继承结构 1.9 容器 1.9.1 参数化类型(范型) 1.10 对象的创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第...
### Genetic Programming范型编程 #### 一、引言与概览 遗传编程(Genetic Programming, GP)是一种基于自然选择原理的自动编程方法,它属于进化计算领域的一部分。该技术利用了生物进化的机制来自动地创建计算机...
迁移工作流范型是近年来工作流研究的新方向。根据迁移工作流管理系统框架,以移动Agent技术为基础,采用Java为开发语言,开发了迁移工作流管理系统原型Migflow。描述了Migflow的内部结构,给出了实现方案,并对迁移...
面向对象编程(Object-Oriented Programming,简称OOP)是一种程序设计范型,它将现实世界中的事物抽象为程序中的对象,通过对象之间的交互来实现程序的功能。在Java中,面向对象主要体现在类、对象、封装、继承和...
吉林大学博士学位论文 关键词:软件重构方法;软件维护;程序转换;行为保留;程序结构改善;...Java语言接口;面向方面范型;横切关注点;方面挖掘; 静态模型;动态模型;逆向软件工程;对象状态模型.
综上所述,网格GIS的研究涉及了GIS体系结构设计、Java网络通信、XML文档处理、空间数据库设计等多个IT领域知识。它的实现需要综合利用各种技术,包括但不限于Java编程、XML技术、数据库技术、网络通信协议等,从而...
在2001年2月,Sun公司宣布了Java网络技术中的一种创新性的范型:JXTA。倡导者是BillJoy,他是Sun公司的主要技术革新者。JXTA提供了一种革命性的框架,允许Java程序员利用新的点对点(P2P)网络协议,勿须考虑底层的...
本文主要探讨了分布式计算的十大范型中的分布式对象模型,以及在此模型下的一些关键技术,如远程方法调用(RMI)、对象请求代理(ORB)和构件技术。 远程方法调用(RMI)是Java平台上的一个重要特性,它使得一个...
1.9.1 参数化类型(范型) 1.10 对象的创建和生命期 1.11 异常处理:处理错误 1.12 并发编程 1.13 Java与Internet 1.13.1 Web是什么 1.13.2 客户端编程 1.13.3 服务器端编程 1.22 总结 第2章 一切都是对象 2.1 用...
尤其在使用JavaScript的开发者群体里,深入了解该语言的本来就不多,研究语言特性的就更少了。 《JavaScript语言精髓与编程实践》精选版从JavaScript 无关的角度综论这些语言的产生发展,以及特性的概要。作为纯...
在《分布式系统原理与范型》这本书中,作者可能详细介绍了分布式系统的特征,如透明性、一致性、容错性、可扩展性和性能优化等。这些特性对于理解分布式系统的设计目标至关重要。 分布式系统的核心概念包括数据复制...
尤其在使用JavaScript的开发者群体里,深入了解该语言的本来就不多,研究语言特性的就更少了。 本迷你书摘引了《JavaScript语言精髓与编程实践》一书有关语言讨论的关键章节(主要在第三、四、五章),从JavaScript...
本书不依赖于具体的程序设计语言(必要的代码示例用Java给出),并采用统一建模语言(UML)的子集来为软件建模,解释学生工作中需要用到的符号。 本书为学生而写,可作为计算机专业本科生、非计算机专业研究生的软件...
5. **程序设计语言范型**: 不同的程序设计语言有不同的范型,如面向过程、面向对象、函数式和声明式等。这些范型反映了不同的编程思想和设计模式,影响着编译程序的实现方式和优化策略。 6. **编译程序的意义**:...
CurlCurl是由美国国防部高级研究项目代理资助,马萨诸塞州科技学院的David A. Kranz开发的Web开发语言, HTML语言的创建者Tim Berners-Lee也参与其中,并扮演了重要的角色。 Curl语言是一种编程语言,它被设计...
这是80/20范型的一个很好的例子——甚至更进一步可以是90/10范型。您用所谓的数据挖掘专家的10%的专业知识就能创建具有90%效力的数据挖掘模型。而为了补上模型剩下的10%的效力并创建一个完美的模型将需要90%额外的...
书中强调了应用层的范型和编程接口,帮助读者在实际中能够快速学习和实现各种应用程序中的协议。随后,通过自顶向下的方法分析网络体系结构,让读者能够专注于网络所提供的服务内容,而不是仅仅停留在网络协议的抽象...
D语言起源于C++,但并非C++的简单扩展或变种,它重新设计了C++的特性并吸收了Java、C#、Eiffel等其他语言的元素。D语言由沃尔特·布莱特(Walter Bright)和安德烈·亚历山德雷斯库(Andrei Alexandrescu)共同开发...