在运行时获取类的泛型类型

2022-08-31 04:13:07

我怎样才能做到这一点?

public class GenericClass<T>
{
    public Type getMyType()
    {
        //How do I return the type of T?
    }
}

到目前为止,我尝试过的所有内容始终返回类型,而不是使用的特定类型。Object


答案 1

正如其他人所提到的,这只有在某些情况下才有可能通过反思。

如果您确实需要该类型,这是通常的(类型安全)解决模式:

public class GenericClass<T> {

     private final Class<T> type;

     public GenericClass(Class<T> type) {
          this.type = type;
     }

     public Class<T> getMyType() {
         return this.type;
     }
}

答案 2

我见过这样的东西

private Class<T> persistentClass;

public Constructor() {
    this.persistentClass = (Class<T>) ((ParameterizedType) getClass()
                            .getGenericSuperclass()).getActualTypeArguments()[0];
 }

休眠通用数据访问对象示例中