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

10-08 11:32