我有一个定义如下的类:
public class GenericClass<T> {
private final Class<T> type;
public GenericClass(Class<T> type) {
this.type = type;
}
public Class<T> getMyType() {
return this.type;
}
}
使用该类代码很容易实例化具有非泛型类型的类的新实例。例如:
GenericClass<String> c = new GenericClass<String>(String.class)
我的问题如下。如何创建具有泛型类型的类的新实例?示例:
GenericClass<List<String>> c = new GenericClass<List<String>>(...)
如果我输入 List<String>.class
编译器给我一个错误。在编译时,我应该使用哪种语法向构造函数指定泛型类型的正确类?
最佳答案
泛型不知道也不关心指定的泛型类,因此,没有 List<String>.class
, 只有 List.class
.你考虑过通配符吗?应该做什么List<?>.class
返回?和 List<? extends AnotherClass>.class
?所以不,您无法知道泛型在编译时持有什么特定类,主要是因为它可以持有仅在运行时才完全指定的不同类。
关于java - 如何在编译时指定泛型类信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433853/