Java泛型变量的类型推断是在编译时期进行的。当你使用泛型方法或泛型类时,编译器会根据传递的参数类型自动推断出泛型变量的具体类型。这样可以简化代码,提高代码的可读性和安全性。
以下是一个简单的泛型类型推断示例:
public class GenericBox{ 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 stringBox = new GenericBox<>(); stringBox.setItem("Hello, world!"); System.out.println(stringBox.getItem()); // 编译器根据传递的参数类型自动推断出泛型变量的具体类型为Integer GenericBox integerBox = new GenericBox<>(); integerBox.setItem(42); System.out.println(integerBox.getItem()); } }
在这个示例中,我们创建了一个名为GenericBox
的泛型类,它有一个泛型变量T
。当我们在main
方法中创建GenericBox
实例并调用setItem
方法时,编译器会根据传递的参数类型自动推断出泛型变量的具体类型。这样,我们就不需要显式地指定泛型变量的类型,从而简化了代码。