java中generic实例详解
一介绍:
在JavaSE1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
二、泛型参数:
classGen{ privateTob; //定义泛型成员变量 publicGen(Tob){ this.ob=ob; } publicTgetOb(){ returnob; } publicvoidsetOb(Tob){ this.ob=ob; } publicvoidshowType(){ System.out.println("T的实际类型是:"+ob.getClass().getName()); } } publicclassGenericParameter{ publicstaticvoidmain(String[]args){ //定义泛型类Gen的一个Integer版本 Gen intOb=newGen (100); intOb.showType(); inti=intOb.getOb(); System.out.println("value="+i); System.out.println("----------------------------------"); //定义泛型类Gen的一个String版本 Gen strOb=newGen ("HelloDylan!"); strOb.showType(); Strings=strOb.getOb(); System.out.println("value="+s); } }
output:
T的实际类型是:java.lang.Integer
value=100
----------------------------------
T的实际类型是:java.lang.String
value=HelloDylan!
三、泛型类:
classGenericsFoo{ privateTx; publicGenericsFoo(Tx){ this.x=x; } publicTgetX(){ returnx; } publicvoidsetX(Tx){ this.x=x; } } publicclassGenericClass{ publicstaticvoidmain(Stringargs[]){ GenericsFoo strFoo=newGenericsFoo ("HelloGenerics!"); GenericsFoo douFoo=newGenericsFoo (newdouble("33")); GenericsFoo
output:
strFoo.getX=HelloGenerics!
douFoo.getX=33.0
objFoo.getX=java.lang.Object@1d0fafc
四限制泛型:
importjava.util.ArrayList; importjava.util.Collection; classCollectionGenFoo{ privateTx; publicCollectionGenFoo(Tx){ this.x=x; } publicTgetX(){ returnx; } publicvoidsetX(Tx){ this.x=x; } } publicclassGenericRestrict{ publicstaticvoidmain(String[]args){ CollectionGenFoo listFoo=null; listFoo=newCollectionGenFoo (newArrayList()); CollectionGenFoolistFoo1=null; listFoo1=newCollectionGenFoo (newArrayList()); System.out.println("实例化成功!"); } }
output:
实例化成功!
五泛型方法:
publicclassGenericFunction{ publicvoidf(Tx){ System.out.println(x.getClass().getName()); } publicstaticvoidmain(String[]args){ GenericFunctionea=newGenericFunction(); ea.f(""); ea.f(10); ea.f('a'); ea.f(ea); } }
output:
java.lang.String
java.lang.Integer
java.lang.Character
GenericFunction
-----------------------------
dylanpresents.
总结
以上就是本文关于java中generic实例详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。