Java泛型是Java語言的一項重要特性,它可以在編譯期間檢查類型的正確性,避免了在運行時出現類型錯誤的情況。泛型可以應用于類、接口、方法等語法結構中,使得代碼更加清晰和簡潔。
Java中的泛型使用了一個通配符”?”來表示一個未知類型,可以應用在參數列表、返回值類型、變量聲明等多種場景中。通配符的類型是由調用方傳入的實參決定的,可用于接收任意類型的對象。
public class TestGeneric{ public static void printArr(T[] arr) { for (T t : arr) { System.out.print(t + " "); } System.out.println(); } public static void main(String[] args) { Integer[] arr1 = {1, 2, 3, 4, 5}; String[] arr2 = {"a", "b", "c", "d", "e"}; printArr(arr1); printArr(arr2); } }
在上述例子中,泛型方法printArr接收一個數組,其中元素的類型是不確定的,可以是任意一種對象類型。通過“?”通配符實現了不同類型數組的打印輸出,提高了代碼的復用性。
除了通配符“?”之外,Java還提供了上限通配符和下限通配符。“? extends 類型”表示類型的上限,即傳入的類型只能是指定類型或其子類;“? super 類型”表示類型的下限,即傳入的類型只能是指定類型的父類或其本身。
public class TestBounds{ public static void printList(List extends Number>list) { for (Number n : list) { System.out.print(n + " "); } System.out.println(); } public static void main(String[] args) { List list1 = Arrays.asList(1, 2, 3, 4, 5); List list2 = Arrays.asList(3.14, 2.718, 1.414); printList(list1); printList(list2); } }
上面的代碼展示了一個使用了上限通配符的例子,泛型方法printList接收一個List集合,其中元素的類型必須是Number或其子類。這樣,方法中就可以使用Number類的方法和屬性,而不用擔心類型轉換錯誤的問題。
綜上,Java中的泛型和通配符是非常有用的特性,可以增強代碼的可讀性和可維護性,減少了類型轉換錯誤的不確定性。我們應當在編碼過程中適當地運用它們。