1.1. 参数化类型的特点
参数化类型有以下特点:
(1)参数化类型和没有类型参数的原始类型在编译后没有本质区别。
(2)类型参数不同的两个参数化类型,不能混用。
public class GenericParameterTest {
//参数化类型T,可以为String,Integer等引用类型。
static class Sample<T> {
//不带参数的构造函数。
public Sample(){
this.obj = null;
}
public Sample(T obj){
this.obj = obj;
}
//参数化类型作为返回值的类型。
public T work(){
System.out.println("work:"+this.obj);
return this.obj;
}
//参数化类型作为参数的类型。
public void update(T obj){
this.obj = obj;
}
//参数化类型作为属性的类型。
private T obj;
}
public static void main(String[] args) {
//语法错误。错误用法。
//Sample<int> anotherSample = new Sample<int>(1);
//正确用法。T是Integer.
Sample<Integer> anotherSample = new Sample<Integer>(1);
//正确用法:不使用类型参数,相当于Sample<String>。
//此时可以推导出类型参数为String。
Sample sam = new Sample("Hello");
//错误用法,不能将String转化为Integer.
//Integer result = sample.work();
//正确用法。String work();
String result = sample.work();
//原始类型。相当于Sample<Object>但是不同于Sample<Object>。
//此时只能推导出类型参数为Object。
Sample sa = new Sample();
//错误用法,不能将Object转化为String.
//String res = sa.work();
//正确用法。Object work();
Object res = sa.work();
}