在Java中,泛型是一種強(qiáng)大的特性,它使得我們能夠編寫可重用、類型安全的代碼。其中,泛型參數(shù)t是最常用的一種形式,它表示類型而不是具體的值。
public class MyClass<T> { private T t; public void setT(T t) { this.t = t; } public T getT() { return t; } }
在上面這個(gè)例子中,我們定義了一個(gè)泛型類MyClass,其中t是一個(gè)泛型參數(shù)。在實(shí)例化MyClass時(shí),我們可以指定t的類型:
MyClass<String> myObj = new MyClass<>(); myObj.setT("Hello World"); String val = myObj.getT(); // "Hello World"
這里,我們實(shí)例化了一個(gè)MyClass對(duì)象,并指定泛型參數(shù)為String。然后我們?cè)趯?duì)象中存儲(chǔ)了一個(gè)字符串,最后通過getT()方法獲取該字符串。
除了t,Java還提供了另一種泛型參數(shù):?jiǎn)柼?hào)(?)。它表示“任何類型”,也稱為通配符。
public void printList(List<?> list) { for (Object obj : list) { System.out.println(obj); } }
在上面這個(gè)例子中,我們定義了一個(gè)printList()方法,它接受一個(gè)List,其中包含任何類型的元素。我們可以傳遞一個(gè)包含字符串、整數(shù)、對(duì)象等的List給該方法。
List<String> strList = Arrays.asList("a", "b", "c"); List<Integer> intList = Arrays.asList(1, 2, 3); List<Object> objList = Arrays.asList(new Object(), new Object()); printList(strList); // prints "a", "b", "c" printList(intList); // prints 1, 2, 3 printList(objList); // prints the toString() of the objects
在這里,我們傳遞了三個(gè)不同類型的List給printList()方法,并且該方法可以處理它們。
總的來說,泛型使得我們能夠編寫可重用、類型安全的代碼,而t和?是泛型中最常用的兩種參數(shù)類型。