java - 如何在编译时指定泛型类信息?

标签 java generics

我有一个定义如下的类:

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/

相关文章:

java - java的字符串编码转换有多贵?

具有 "conditional"约束的 C# 泛型类?

java - 使用eclipse在运行时抛出异常

java - 使用 GridBagLayout 将 JScrollBar 添加到 JPanel

generics - F# 将泛型参数约束为枚举类型

c# - VB中泛型方法重载编译错误

java - 泛型 <T extends Number & Comparable<T>> 和 T extends Comparable<?扩展号码>

swift - 使用通用函数获取核心数据实体亲属

java - 如何同时调用两个线程?

java - Jackcess "NoClassDefFoundError"异常