Java重要技术(20)泛型之参数化类型的特点

时间:2022-08-12 19:25:50

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();



}