如何在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。也许有某种模式或变通方法?