Java 泛型可讓您使用類型參數定義類別、介面和方法。這意味著您可以編寫適用於不同資料類型的程式碼,同時確保編譯時的類型安全。
泛型是 Java 5 中引入的功能,可讓您使用其所操作的資料類型的佔位符來定義類別、介面或方法。這有助於建立可用於任何類型的類別和方法,同時仍提供編譯時類型安全性。
範例:
public class Box<T> { private T value; public void setValue(T value) { this.value = value; } public T getValue() { return value; } }
在此範例中,T 是一個類型參數,當您建立 Box 實例時,可以將其替換為任何資料類型。
仿製藥有幾個好處:
範例:
沒有泛型:
List list = new ArrayList(); list.add("Hello"); String s = (String) list.get(0); // Casting needed
使用泛型:
List<String> list = new ArrayList<>(); list.add("Hello"); String s = list.get(0); // No casting needed
泛型可以與類別一起使用,以確保類型安全性和靈活性。以下是如何在類別定義中有效地使用泛型。
考慮一個泛型類別 Pair,它包含兩個可能不同類型的值:
public class Pair<K, V> { private K key; private V value; public Pair(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } }
在此範例中,K 和 V 是建立 Pair 實例時可以指定的類型參數。
使用範例:
Pair<String, Integer> pair = new Pair<>("Age", 30); System.out.println("Key: " + pair.getKey() + ", Value: " + pair.getValue());
有時,您可能想要限制可與泛型類別或方法一起使用的類型。有界類型參數可讓您指定一系列可接受的類型。
範例:
public class NumberUtils { public static <T extends Number> void printNumber(T number) { System.out.println("Number: " + number); } }
這裡,T 僅限於 Number 的子類,例如 Integer、Double 等。
使用範例:
NumberUtils.printNumber(10); // Valid NumberUtils.printNumber(10.5); // Valid
泛型不限於類別。它們還可以在方法中使用來創建靈活且類型安全的方法。
這是一個傳回兩個值中的最大值的方法:
public class Util { public static <T extends Comparable<T>> T max(T a, T b) { return a.compareTo(b) > 0 ? a : b; } }
在這個方法中,T是一個型別參數,必須擴充Comparable,確保T可以比較。
使用範例:
public class Box<T> { private T value; public void setValue(T value) { this.value = value; } public T getValue() { return value; } }
通配符可讓您以更靈活的方式指定一系列可接受的類型。例如, ? extends T 表示擴展 T 的未知類型,而 ? super T 表示未知類型,它是 T 的超類型。
範例:
List list = new ArrayList(); list.add("Hello"); String s = (String) list.get(0); // Casting needed
使用範例:
List<String> list = new ArrayList<>(); list.add("Hello"); String s = list.get(0); // No casting needed
掌握Java泛型可以大幅增強程式碼的靈活性和安全性。透過了解如何在類別、方法中使用泛型以及通配符,您將能夠編寫更健壯且可重複使用的程式碼。如果您有任何疑問或需要進一步說明,請隨時在下面發表評論!
閱讀更多文章:掌握 Java 泛型:帶有程式碼範例的綜合指南
以上是掌握 Java 泛型:帶有程式碼範例的綜合指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!