如何获取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关于超类型令牌和类型文字的博客文章。