Java是一門支持泛型編程的語言,通過使用Java泛型,我們可以在編譯時期進行類型檢查,避免類型轉換異常,提高代碼的健壯性和可維護性。在Java泛型中,我們經常會使用到T和>這兩個符號,下面我們來了解一下他們的區別。
T是Java泛型中的類型變量,它是一種占位符類型,可以用來代替任意Java類型。我們可以在編寫泛型方法或泛型類的時候使用T來表示泛型類型,例如:
public class MyList<T> { private T[] array; public MyList(T... array) { this.array = array; } public T get(int index) { return array[index]; } public static <T> List<T> fromArrayToList(T[] array) { return Arrays.asList(array); } }
在上述代碼中,我們使用了<T>來聲明MyList類中的泛型類型,使用T[]表示數組中的元素類型。在get方法中,我們直接返回了T類型的元素。在fromArrayToList中,我們使用了<T>來表示泛型類型,方法接受一個T[]類型的數組,然后將它轉換成List<T>類型返回。
而在使用通配符的時候,我們通常使用<?>來代表一個未知的類型,例如:
public static void printList(List<?> list) { for (Object obj : list) { System.out.println(obj); } }
在上述代碼中,我們使用了<?>來表示一個未知類型的集合,我們無法修改其中的元素,只能以Object的形式讀取其中的元素。該方法可以接受List<String>等類型的集合。
因此,T和<?>在Java泛型中的使用都十分重要,T用來表示泛型類型,可以在方法或類的聲明中使用;而<?>用來表示一個未知類型,可以在通過通配符限制泛型類型時使用。
下一篇nval oracle