java中generic实例详解
程序员文章站
2023-12-14 23:19:22
一介绍:
在javase1.5之前,没有泛型的情况的下,通过对类型object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求...
一介绍:
在javase1.5之前,没有泛型的情况的下,通过对类型object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
二、泛型参数:
class gen<t> { private t ob; //定义泛型成员变量 public gen(t ob) { this.ob = ob; } public t getob() { return ob; } public void setob(t ob) { this.ob = ob; } public void showtype() { system.out.println("t的实际类型是: " + ob.getclass().getname()); } } public class genericparameter { public static void main(string[] args){ //定义泛型类gen的一个integer版本 gen<integer> intob=new gen<integer>(100); intob.showtype(); int i= intob.getob(); system.out.println("value= " + i); system.out.println("----------------------------------"); //定义泛型类gen的一个string版本 gen<string> strob=new gen<string>("hello dylan!"); strob.showtype(); string s=strob.getob(); system.out.println("value= " + s); } }
output:
t的实际类型是: java.lang.integer
value= 100
----------------------------------
t的实际类型是: java.lang.string
value= hello dylan!
三、泛型类:
class genericsfoo<t> { private t x; public genericsfoo(t x) { this.x = x; } public t getx() { return x; } public void setx(t x) { this.x = x; } } public class genericclass { public static void main(string args[]){ genericsfoo<string> strfoo=new genericsfoo<string>("hello generics!"); genericsfoo<double> doufoo=new genericsfoo<double>(new double("33")); genericsfoo<object> objfoo=new genericsfoo<object>(new object()); system.out.println("strfoo.getx="+strfoo.getx()); system.out.println("doufoo.getx="+doufoo.getx()); system.out.println("objfoo.getx="+objfoo.getx()); } }
output:
strfoo.getx=hello generics!
doufoo.getx=33.0
objfoo.getx=java.lang.object@1d0fafc
四 限制泛型:
import java.util.arraylist; import java.util.collection; class collectiongenfoo<t extends collection> { private t x; public collectiongenfoo(t x) { this.x = x; } public t getx() { return x; } public void setx(t x) { this.x = x; } } public class genericrestrict { public static void main(string[] args) { collectiongenfoo<arraylist> listfoo = null; listfoo = new collectiongenfoo<arraylist>(new arraylist()); collectiongenfoo<? extends collection> listfoo1 = null; listfoo1=new collectiongenfoo<arraylist>(new arraylist()); system.out.println("实例化成功!"); } }
output:
实例化成功!
五 泛型方法:
public class genericfunction { public <t> void f(t x) { system.out.println(x.getclass().getname()); } public static void main(string[] args) { genericfunction ea = new genericfunction(); ea.f(" "); ea.f(10); ea.f('a'); ea.f(ea); } }
output:
java.lang.string
java.lang.integer
java.lang.character
genericfunction
-----------------------------
dylan presents.
总结
以上就是本文关于java中generic实例详解的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!