如何获取generics参数类型的类实例
在代码中,如果我写这样的代码行:
GClass x = new GClass();
让我们说,这个课程是这样的:
public static class GClass { private T value = null; public GClass() { // What is T? } }
在我插入问题“什么是T?”的地方,我不想要值(即为null
),而是它的类型(即Double
)。
除非你添加一个构造函数参数来获取Class
参数并在你的情况下用Double.class
传递它,否则你无法在执行时找到T
然后,您可以存储该类并在以后使用它。
这是由于类型擦除 …基本上generics只是编译器魔术插入适当的强制转换并检查事情应该没问题。
请参阅优秀的Java Generics FAQ中的Type Erasure部分。
您可能还想阅读Neal Gafter关于超类型令牌和类型文字的博客文章。