我有一个泛型类Foo<T>
。在Foo
的方法中,我想获得T
类型的类实例,但是我只是不能调用T.class
。
使用T.class
解决它的首选方法是什么?
最佳答案
简短的答案是,无法找到Java中泛型类型参数的运行时类型。我建议阅读Java Tutorial中有关类型擦除的章节以获取更多详细信息。
一种流行的解决方案是将类型参数的Class
传递给通用类型的构造函数,例如
class Foo<T> {
final Class<T> typeParameterClass;
public Foo(Class<T> typeParameterClass) {
this.typeParameterClass = typeParameterClass;
}
public void bar() {
// you can access the typeParameterClass here and do whatever you like
}
}