建立泛型集合後,若需編寫處理泛型列表的方法(如列印所有元素),類型參數 T 僅能用於泛型類別宣告,不可直接用於方法定義,否則編譯錯誤:
public static void print(GenList<T> list) {} // 編譯錯誤
若不使用通配符,必須為每種類型重載方法:
public static void print(GenList<Integer> list) {}
public static void print(GenList<Double> list) {}
// ...
J2SE 5.0 提供泛型通配符 ?,可代表任意類型:
public static void print(GenList<?> list) {}
T t = new T(); 編譯錯誤。T[] ts = new T[10]; 編譯錯誤。public class GenClass<T> {
private static T t; // 編譯錯誤
}
public GenException<T> extends Exception {} 編譯錯誤。泛型是 J2SE 5.0 的強大功能,能建立型別安全、可重用的程式碼。雖 Java 泛型目前仍不及 C++ 模板強大,但隨語言演進,其在 Java 中的角色將愈發重要。