如何获取泛型参数类型的类实例

时间:2009-09-03 09:35:31

标签: java generics

在代码中,如果我写这样的代码行:

GClass<Double> x = new GClass<Double>();

让我们说,课程是这样的:

public static class GClass<T> {
  private T value = null;
  public GClass() {
    // What is T? 
  }
}

我在插入问题“什么是T?”时,我不想要值(即null),而是它的类型(即Double)。

1 个答案:

答案 0 :(得分:10)

您无法在执行时找到T,除非您添加构造函数参数以获取Class<T>参数并在您的情况下通过Double.class调用它。然后,您可以存储该类并在以后使用它。

这是由于类型擦除 ...基本上泛型只是编译器魔术来插入适当的强制转换,并检查 的内容是否正常。

请参阅优秀Type ErasureJava Generics FAQ部分。

您可能还想阅读Neal Gafter关于super type tokenstype literals的博客文章。