上一篇文章,我們復習了泛型最基本的應用 - Collection 類別的型別指定。除此之外,泛型還能用在其它的地方。
例如我們宣告了一個常數類別 Constant:
package idv.jacky.ironman4.day17;
public class Constant<T> {
private T t;
public Constant(T t) {
this.t = t;
}
}
你可以看到熟悉地角刮號,但這次是出現在類別宣告的類別名稱後方。我們不指定特定的型別給它,所以用個 T 代替。然後我們有個 private 的變數,是個 T 型別的 t,在 Constant 建構子裡,傳入了一個 t ,指定給 Constant 類別自己的 t。
有聽沒有懂?我們來看看使用的例子:
package idv.jacky.ironman4.day17;
public class Day17Example {
public static void main(String[] args) {
Constant<Integer> life = new Constant<>(42);
Constant<Double> pi = new Constant<>(3.14);
}
}
程式的第6行,我們宣告了一個 Constant 物件,名叫 life,然後指定它為 Integer 型別,並設定它的值為 42。
程式的第7行,我們宣告了另一個 Constant物件,名叫 pi,然後指定它為 Double 型別,並設定它的值為 3.14。
這個例子雖然沒有什麼實質上的應用,但它告訴我們可以透過泛型,來讓一個類別能處理不同的型別物件。
這是泛型的第二種基本應用 - 擴展。讓類別能更有彈性地容納不同的型別。