欢迎来到天天文库
浏览记录
ID:16108151
大小:529.00 KB
页数:16页
时间:2018-08-08
《跟我学java泛型技术及应用实例——java泛型相关的应用技术》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、杨教授工作室精心创作的优秀程序员职业提升必读系列资料1.1跟我学Java泛型技术及应用实例——Java泛型相关的应用技术1.1.1Java泛型相关的应用技术1、什么是泛型----泛型的本质是参数化类型(1)什么是泛型泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。(2)在什么场合下需要应用泛型如果一个类有一个或者多个类型的变量,那么这个类就是泛型类,这些类型变量是类的类型参数。2、Java泛型的种类Java的泛型主要有泛型类、泛型接口和泛型方法等,在Java语言中,将参数类型可以用在程序类、接口和方法的定
2、义中,分别称为泛型类、泛型接口、泛型方法。3、泛型类的代码示例packagecom.bluedream.generics;importjava.util.Collection;publicclassSomeGenericsDemo{CollectiononeCollection;publicvoiddoSomeThing(EoneElement){oneCollection.add(oneElement);/***其它程序代码,在此省略...*/}}杨教授工作室,版权所有,盗版必究,16/16页杨教授工作室精心创作的优秀程序员职业提升必读系列资
3、料4、为什么要应用泛型(1)泛型就好比Word中的模板在Word的模板中,提供了基本的文档编辑内容,在定义Word模板时,对具体编辑哪种类型的文档是未知的。在Java中,泛型则提供了类、接口和方法、变量等的模板,泛型也可以看作是占位符,与定义Word模板时类似,定义泛型时的具体类型是未知的。(2)Java语言引入泛型的好处是安全和简单在JavaSE1.5之前,没有泛型的情况的下,通过对Object类型的对象引用来实现参数的“任意化”,“任意化”带来的缺点是需要在使用者的代码中要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型是可以预知的情况下进行
4、的。如下为程序代码示例:packagecom.bluedream.generics;importcom.bluedream.swing.JToolBarTest;publicclassSomeDigitClass{publicvoiddoSomeThing(ObjectoneParameterObject){if(oneParameterObjectinstanceofInteger){IntegertargetParameterObject=(Integer)oneParameterObject;}elseif(oneParameterObjectins
5、tanceofFloat){FloattargetParameterObject=(Float)oneParameterObject;}else{DoubletargetParameterObject=(Double)oneParameterObject;杨教授工作室,版权所有,盗版必究,16/16页杨教授工作室精心创作的优秀程序员职业提升必读系列资料}}publicstaticvoidmain(String[]args){SomeDigitClassoneDigitClass=newSomeDigitClass();oneDigitClass.doSom
6、eThing("字符串类型的参数");}}在上面的代码示例中,实际传递的参数的数据类型为字符串,但Java编译器并不认为参数的数据类型是非法,在如下示图中并没有给出编译错误。而对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个很严重的安全隐患——在程序运行中查询了动态的错误。杨教授工作室,版权所有,盗版必究,16/16页杨教授工作室精心创作的优秀程序员职业提升必读系列资料(3)泛型的好处是在编译的时候就进行类型安全方面的检查并且所有的强制类型转换都是自动和隐式的,以提高代码的可重用率。如下为运行时出现错误的示例代码:pack
7、agecom.bluedream.generics;importjava.util.ArrayList;importjava.util.List;publicclassSomeDigitClass{publicstaticvoidmain(String[]args){ListoneArrayListObject=newArrayList();oneArrayListObject.add("第1个正确的字符串参数");oneArrayListObject.add("第2个正确的字符串参数");oneArrayListObject.add(50);for(in
8、tloopIndex=0;loopIndex
此文档下载收益归作者所有