在Java中,泛型(generics)是一個強大的特性。它允許程序員在編寫代碼時不指定具體的類型,而是使用類型參數來代替。
泛型的主要優點是它可以提高代碼的可讀性和重用性。它能夠在編譯時檢查類型安全性,避免了運行時的類型錯誤。另外,泛型還能夠支持多態性(polymorphism),這就允許程序員編寫更加靈活和通用的代碼。
Java泛型有兩個基本概念:參數化類型和類型變量。參數化類型就是類或接口中的類型參數,用尖括號括起來并放在類型名稱的后面。例如:
public class ArrayList<E> { //... }
在這個例子中,<E>就是ArrayList的參數化類型。類型變量表示了一個未指定的類型,并用作參數化類型中的占位符。例如:
public class List<T> { public T get(int index); public void add(T element); }
在這個例子中,<T>表示了類型變量,它代表了未指定的類型,可以是任何類型。
通過泛型,我們可以使用一些通配符來限制類型變量的范圍。例如,我們可以使用<? extends T>來表示T的子類類型,或者<? super T>來表示T的父類類型。這些通配符在泛型方法和泛型類中都可以使用。
Java泛型還有很多高級用法,例如類型擦除和泛型通配符。這些用法可以幫助程序員編寫更加靈活和復雜的代碼。