Java基礎Demo -- 泛型類的示例
阿新 • • 發佈:2018-12-24
泛型類 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