Java基础Demo -- 泛型类的示例
泛型类 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( "ts 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())); } }
程序输出:
ts value[100], Type of T is: java.lang.Integer ts 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