1. 程式人生 > >Java基礎Demo -- 泛型類的示例

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( "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