Java泛型是Java編程語言中一種高級特性,它使得Java程序員可以編寫更加通用、可重用、類型安全的代碼。Java泛型機制是在Java 5版本中引入的,它使用參數化類型來實現更加通用的代碼。使用Java泛型可以在編譯期間檢查類型安全,避免了在運行時發生類型轉換錯誤和ClassCastException異常。
// 泛型類 public class GenericClass{ private T data; public void setData(T data) { this.data = data; } public T getData() { return data; } } // 泛型方法 public class GenericMethod { public void printData(T data) { System.out.println(data); } } // 使用泛型 public class Test { public static void main(String[] args) { GenericClass intObj = new GenericClass (); intObj.setData(10); System.out.println(intObj.getData()); GenericMethod gm = new GenericMethod(); gm.printData("Hello World!"); } }
Java泛型有時候需要使用通配符來實現更加靈活的類型匹配,通配符是一種特殊的泛型類型形參,用來表示一個未知類型。Java泛型通配符有三種形式,分別為“?”、“? extends”、“? super”,其中“?”表示任意類型,“? extends”表示某個類的子類或者本身,“? super”表示某個類的父類或者本身。
// 使用通配符 public class Test { public static void printList(List>list) { for (Object obj : list) { System.out.println(obj); } } public static void main(String[] args) { ListintList = new ArrayList<>(); intList.add(1); intList.add(2); printList(intList); List strList = new ArrayList<>(); strList.add("Hello"); strList.add("World"); printList(strList); } } // 使用extends通配符 public class Test { public static double sum(List extends Number>list) { double sum = 0; for (Number num : list) { sum += num.doubleValue(); } return sum; } public static void main(String[] args) { List intList = new ArrayList<>(); intList.add(1); intList.add(2); System.out.println(sum(intList)); List doubleList = new ArrayList<>(); doubleList.add(1.0); doubleList.add(2.0); System.out.println(sum(doubleList)); } } // 使用super通配符 public class Test { public static void add(List super Integer>list) { list.add(1); list.add(2); } public static void main(String[] args) { List