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<T> list){}
5. 范型的一些局限
5.1 類型參數不能實例化,例如
T t = new T(); // compiling error
5.2 不能實例化類型參數的數組
T[] ts = new T[10]; //compilation error
5.3 類的靜態變量不能聲明為類型參數類型
public class GenClass<T> {
private static T t; // compiling error
}
5.4 范型類不能繼承自Throwable以及其子類
public GenExpection<T> extends Exception{} // compiling error
The artical in dW.