Generic type in Tiger
1. 受限範型是指類型參數的取值範圍是受到限制的. extends關鍵字不僅僅可以用來聲明類的繼承關系, 也可以用來聲明類型參數(type
parameter)的受限關系.例如, 我們隻需要一個存放數字的清單, 包括整數(Long, Integer, Short),
實數(Double, Float), 不能用來存放其他類型, 例如字元串(String), 也就是說,
要把類型參數T的取值範型限制在Number極其子類中.在這種情況下, 我們就可以使用extends關鍵字把類型參數(type
parameter)限制為數字,
2. 在建立範型類的對象的時候, 和建立普通對象基本類似, 必須提供具體的類類型來替代類型參數T (J2SE 5.0目前不支援原始類型作為類型參數(type parameter)).
3. T和V雖然看起來是兩個不同的類型參數, 但是在使用這個範型類的時候, T和V很有可能被替換成同一種類型. 是以在聲明多個類型參數的範型類時, 要注意避免這種二義
性錯誤.
4. J2SE 5.0中提供了範型的通配符"?", "?"可以用來代替任何類型, 例如使用通配符來實作print方法
public static void print(GenList> list) {}
而非 public static void print(GenList list){}
5. 範型的一些局限
5.1 類型參數不能執行個體化,例如
T t = new T(); // compiling error
5.2 不能執行個體化類型參數的數組
T[] ts = new T[10]; //compilation error
5.3 類的靜态變量不能聲明為類型參數類型
public class GenClass {
private static T t; // compiling error
}
5.4 範型類不能繼承自Throwable以及其子類
public GenExpection extends Exception{} // compiling error
The artical in dW.