Java泛型(Generics)是Java SE 5中引入的一個(gè)特性,它允許在定義類、接口和方法時(shí)使用類型參數(shù),以便在使用時(shí)指定實(shí)際的類型。使用泛型可以使代碼更加通用、類型安全,同時(shí)也提高了代碼的可讀性和維護(hù)性。
下面是一個(gè)使用Java泛型的示例代碼:
public class Box<T> { private T item; public void setItem(T item) { this.item = item; } public T getItem() { return item; } }
在這個(gè)示例中,我們定義了一個(gè)名為Box的類,它有一個(gè)類型參數(shù)T。類型參數(shù)T可以在類的成員變量、方法參數(shù)、方法返回類型中使用,它代表一個(gè)實(shí)際的類型,這個(gè)類型可以是Java的任何引用類型或基本類型。
在使用Box類時(shí),我們可以指定實(shí)際的類型,例如:
Box<String> stringBox = new Box<>(); stringBox.setItem("Hello, World!"); String item = stringBox.getItem(); System.out.println(item); // 輸出:Hello, World! Box<Integer> intBox = new Box<>(); intBox.setItem(42); Integer item = intBox.getItem(); System.out.println(item); // 輸出:42
在這個(gè)示例中,我們分別創(chuàng)建了一個(gè)Box對(duì)象,并指定了不同的類型(String和Integer)。使用泛型可以使代碼更加通用,我們可以在不同的場(chǎng)景下使用Box類來(lái)存儲(chǔ)不同類型的對(duì)象,而不需要編寫(xiě)不同的類來(lái)處理每種類型。
Java泛型還提供了一些限定符(Bounds),如extends和super,它們可以用來(lái)限制類型參數(shù)的范圍。例如,我們可以使用extends限定符來(lái)限制類型參數(shù)必須是某個(gè)類的子類:
public class Container<T extends Number> { private T item; public void setItem(T item) { this.item = item; } public T getItem() { return item; } }
在這個(gè)示例中,我們使用了extends限定符來(lái)限制類型參數(shù)T必須是Number類的子類或Number類本身。這樣,我們就可以在Container類中使用類型參數(shù)T來(lái)表示一個(gè)數(shù)字類型的對(duì)象。