我有一个泛型工厂方法。
public static <T> List<T> create(){
return new ArrayList<T>();
}
但它没有参数。
我没有给出函数的类型参数,但它知道没有任何参数的适当类型。
public static void main(String[] args){
List<Integer> intlist = create(); //it is an Integer List
List<String> stringlist = create(); //it is a String List
}
最佳答案
由于类型删除,JVM 不知道泛型类型参数。
Java 编译器能够推断出 T
在您的示例中应该是 Integer
或 String
,因为它可以访问泛型类型有关您声明的变量类型的信息。
关于java - JVM如何知道没有参数的泛型类型参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647702/