1. 程式人生 > >什麼是java泛型

什麼是java泛型

什麼是泛型呢?

我們首先寫一個最簡單的泛型類來說明:

public class Generics<T> { //T是type的簡稱,可以使用任何名稱代替
	private T o; //泛型成員變數
	public Generics(T o){
		this.o=o;
	}
	public T getObject() {
		return o;
	}
	public void setObject(T o) {
		this.o = o;
	}
	public String getType() {
		return o.getClass().getName();
	}
}

這個泛型類包括自己的建構函式,以及get、set方法和一個getType方法。

我們可以這樣使用這個類:

public class GenericsDemo{
	public static void main(String[] args){
		
		Generics<Integer> intObject=new Generics<Integer>(1);
		System.out.println("the value of intObject is " + intObject.getObject());
		System.out.println("the type of intObject  is " + intObject.getType());

		Generics<String> stringObject=new Generics<String>("hi, generics!");
		System.out.println("the value of stringObjectis " + stringObject.getObject());
		System.out.println("the type of stringObjectis " + stringObject.getType());
	}
}

我們可以使用這個泛型類的各種類型別的版本(如例子中的Integer, String, 以及所有Object類及其子類)。不過泛型並不支援基本資料型別。

很明顯,使用java泛型,我們可以省掉強制型別轉換。編譯器會保留引數的型別資訊,執行型別檢查,執行型別轉換操作。因此開發人員不需要自己確保型別轉換的安全性,而把這個交給編譯器去做。