3.3.4 使用通配符
前面我們創建了范型的列表, 如果我需要一個方法來處理范型列表, 例如, 我們希望 把列表中的每個元素都打印出來, 但是類型參數(type parameter)只能使用在聲明一個范 型類的時候, 如果類型參數使用在函數定義裡會導致編譯錯誤
public static void print(GenList<T> list){} //編譯錯誤
在這種情況下, 我們需要用另外一種方法來表示一個范型類, 否則, 就可能需要書寫 多個print函數
public static void print(GenList<Integer> list){}
public static void print(GenList<Double> list){}
…
public static void print(GenList<String> list){}
J2SE 5.0中提供了范型的通配符"?", "?"可以用來代替任何類型, 例如使用通配符來 實現print方法
public static void print(GenList<?> list) {}
3.4. 范型的一些局限型
(1) 類型參數不能實例化, 例如,
T t= new T(); //編譯錯誤
(2) 不能實例化類型參數的數組
T[] ts= new T[10]; //編譯錯誤
(3) 類的靜態變量不能聲明為類型參數類型
public class GenClass<T> {
private static T t; //編譯錯誤
}
(4) 范型類不能繼承自Throwable以及其子類
public GenExpection<T> extends Exception{} //編譯錯誤
3.5.范型小結
范型是J2SE 5.0所提供的一項強大的功能, 使用范型可以創建類型安全的、可重用的 代碼, 雖然目前Java的范型還無法和C++的范型相提並論, 但是, 隨著Java語言本事的演 進, 范型會在Java語言中發揮更大的作用的.
本文來自編程入門網:http://www.bianceng.cn/Programming/Java/201104/25425_5.htm