Java泛型是Java語言中的一項重要特性,它可以將類型參數化,使得代碼更加靈活和可讀。Java泛型的實現方式是通過擦除機制,即在編譯時將泛型類型轉換為原生類型來實現,但是泛型的類型信息在編譯之后會被擦除,導致Java泛型在一定程度上存在類型安全問題。
//定義一個泛型類 public class Box<T> { private T t; public void set(T t) { this.t = t; } public T get() { return t; } } //使用泛型類 Box<Integer> integerBox = new Box<>(); integerBox.set(10); Integer integer = integerBox.get(); //編譯后會被轉換成 Object -->Integer
上面的代碼中,定義了一個泛型類Box,Box類中有一個類型參數T,同時定義了兩個方法set和get用于設置和獲取屬性值。在使用泛型類時,需要指定泛型類型參數,如Box<Integer>表示這是一個Integer類型的Box。
public static void printList(List<? extends Number> list) { for (Number n : list) { System.out.print(n + " "); } } public static void main(String[] args) { List<Integer> ilist = Arrays.asList(1, 2, 3); printList(ilist); }
Java泛型類型通配符是一種特殊的類型,它可以被用作方法的參數類型或者返回類型,用于限制方法的輸入或者返回,通配符分為上界通配符和下界通配符。在上面的代碼中,定義了一個printList方法,它的參數類型為List<? extends Number>,這個通配符表示可以接收任意繼承自Number的類型的列表。這個代碼中,它接收了一個Integer類型的列表,在執行printList方法時,將會遍歷這個列表,并打印出列表中的元素。
總體來說,Java泛型是Java語言中一個非常重要的特性,它可以使編寫的代碼具有更高的可讀性和可靠性,并且通過擦除機制來實現泛型,雖然擦除機制存在一定的類型安全問題,但是在實際應用中,它的優勢遠遠大于缺點。