}
publicstaticvoidmain(String[]args){
Box<Integer>boxInt=newBox<Integer>();
boxInt.add(1);
IntegerintResult=boxInt.get();
Box<String>boxStr=newBox<String>();
boxStr.add("Test");
StringstrResult=boxStr.get();
System.out.println("IntegerResult:"+intResult);
System.out.println("StringResult:"+strResult);
}
}
运行结果:
IntegerResult:1
StringResult:Test
是不是很有意思,我们写了一个类,但这个类的类型却不适固定的,他即可以为 String,
又可以为 Integer,可以为任意定义的类型(非 primitive)。
简单解释一下,T 就是 type,java 定义的一个泛型的概念,即不是关键字,也不是类,
可以适应任何类型!e.g.:
当我们传入 String 类型的时候,那么 T 的类型就是 String,如果 StringstrResult=boxStr.ge
t();被替换成 IntegerstrResult=boxstr.get();就会报错,因为类型不匹配。这样的好处就是可
以再代码中发现错误。
这样的代码再我们日常编码中比较少见,我们比较常用的只是对 Collection 类的一些泛型
使用。但是再一些框架程序中,我们经常可以看到这样编程的影子!
我们可以看一下简单的例子:
publicclassGenericExample{
publicvoidtestOrign(){
ListstrList=newArrayList();
strList.add("test1");
Stringtest1=(String)strList.get(0);
System.out.println("Test1:"+test1);
}
publicvoidtestGeneric(){
List<String>strList=newArrayList<String>();