Avatar ·

如何在Java中获取类型参数T的Class对象?

大家好!我写Java时间不长,在使用泛型时遇到了一个问题。我有一个泛型类,需要在其中获取类型参数T的Class实例(Class)。例如,我想通过反射创建T的实例,或者将其传递给某个需要Class的方法。 以下是一个无法正常工作的代码示例: ```java public class MyGenericClass { public void doSomething() { // 这里我想获取Class,但不知道如何做 Class clazz = T.class; // 编译错误! // 然后我想创建T的新实例 T instance = clazz.newInstance(); } } ``` 编译器报错:“Cannot select from a type variable”。我明白由于类型擦除(type erasure),T的信息在运行时丢失了。但该怎么办呢?我看到一些框架(例如Gson或Spring)能够获取类型的Class。也许有某种模式或变通方法?