首页 > 代码库 > Java重要技术(20)泛型之参数化类型的特点

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

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

 

}

 

 

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