Java泛型變量的類型推斷是在編譯時期進行的。當你使用泛型方法或泛型類時,編譯器會根據傳遞的參數類型自動推斷出泛型變量的具體類型。這樣可以簡化代碼,提高代碼的可讀性和安全性。
以下是一個簡單的泛型類型推斷示例:
public class GenericBox<T> {
private T item;
public void setItem(T item) {
this.item = item;
}
public T getItem() {
return item;
}
}
// 使用泛型類
public class Main {
public static void main(String[] args) {
// 編譯器根據傳遞的參數類型自動推斷出泛型變量的具體類型為String
GenericBox<String> stringBox = new GenericBox<>();
stringBox.setItem("Hello, world!");
System.out.println(stringBox.getItem());
// 編譯器根據傳遞的參數類型自動推斷出泛型變量的具體類型為Integer
GenericBox<Integer> integerBox = new GenericBox<>();
integerBox.setItem(42);
System.out.println(integerBox.getItem());
}
}
在這個示例中,我們創建了一個名為GenericBox
的泛型類,它有一個泛型變量T
。當我們在main
方法中創建GenericBox
實例并調用setItem
方法時,編譯器會根據傳遞的參數類型自動推斷出泛型變量的具體類型。這樣,我們就不需要顯式地指定泛型變量的類型,從而簡化了代碼。