如何获取T类泛型的类实例

问题:

我有一个泛型类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
    }
}

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to get a class instance of generics type T

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 2 = 6