泛型类 public class MyClass<T>{} 的简单入门示例
/**
* 泛型类 class MyClass<T>{}
*/
class MyGen<T>
{
private T t;
public void setValue(T t){
this.t = t;
}
public T getValue(){
return t;
}
public void showType(){
System.out.println( "t's value["+t+"], Type of T is: " + t.getClass().getName() );
}
}
//测试类:泛型类实例化时明确T到底是什么类型
public class MyGenDemo{
public static void main(String[] args){
MyGen<Integer> gen1 = new MyGen<>(); //实例化时明确了T就是Integer
gen1.setValue(100);
gen1.showType();
MyGen<String> gen2 = new MyGen<>(); //实例化时明确了T就是String
gen2.setValue("abc");
gen2.showType();
System.out.println();
System.out.println("编译过后泛型类MyGen<T>的<T>被检查并擦除!");
System.out.println("gen1.class is "+gen1.getClass().getName()+" ,not MyGen<Integer>");
System.out.println("gen2.class is "+gen2.getClass().getName()+" ,not MyGen<String>");
System.out.println("gen1.class==gen2.class is "+(gen1.getClass()==gen2.getClass()));
}
}
程序输出:
t's value[100], Type of T is: java.lang.Integer
t's value[abc], Type of T is: java.lang.String
编译过后泛型类MyGen<T>的<T>被检查并擦除!
gen1.class is MyGen ,not MyGen<Integer>
gen2.class is MyGen ,not MyGen<String>
gen1.class==gen2.class is true