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
方法时,编译器会根据传递的参数类型自动推断出泛型变量的具体类型。这样,我们就不需要显式地指定泛型变量的类型,从而简化了代码。