java generics
1.0.0
泛型是一種創建類型安全類別和方法的方法,這些類別和方法可以對不同類型的物件進行操作,以在編譯時而不是運行時捕獲類型錯誤。
5.2版本引入
公用類別 GenericClass{私有最終 T 項; 公共 GenericClass(T item) {this.item = item; } public T getItem() {回傳項目; } }
私人靜態void printItem(T item) {System.out.println(item.toString()); }
它用於限製或綁定到某些類型或其子類型。
它將允許我們呼叫有界類或介面的方法。
private staticdouble add(T numOne, T numTwo) {return numOne.doubleValue() + numTwo.doubleValue(); }
它是一個允許編譯器自動確定泛型方法或建構函數參數的類型的功能。
Listlist = new ArrayList<>();
它是一個>
符號,用來表示未知類型的參數。
private static void printItemsInList(List> list) {for (Object item : list) {System.out.println(item); } }
它用於指定類型參數必須是某個類別或介面的子類型。
它用於存取項目。
private static void printItemsInList(List extends Number> list) {for (Number number : list) {System.out.println(number); } }
它用於指定類型參數必須是某個類別或介面的超類型。
它用於修改項目。
列表 數字 = new ArrayList<>();numbers.add(10);numbers.add(10.2);numbers.add(10.4f);System.out.println(numbers);
類型安全
資料類型在編譯時而不是運行時更正,這使得程式碼更加健全和可靠。
程式碼可重複使用性
編寫可以處理多種類型資料的類別和方法,這有助於減少需要編寫的程式碼量。
表現
透過減少類型轉換的需要並避免運行時類型檢查的開銷來提高效能。
類型擦除
這是一個關鍵功能,它會在運行時刪除泛型程式碼,這可能會限制泛型在某些情況下的有用性。
對原始類型的有限支持
Java 中的泛型不直接支援原始型別,例如 int 或 double。相反,您必須使用它們相應的包裝類,例如 Integer 或 Double。這可能比直接使用原始類型效率低。
複雜
可以增加使用複雜型別層次結構和通配符類型的程式碼的複雜度。