我根本不是Java专家,所以如果我做的很愚蠢,我深表歉意。我正在尝试使用此通用参数的类型

public class TestClass<T> {
    public T testMethod() {
        Type type = getClass().getGenericSuperclass();
        ParameterizedType paramType = (ParameterizedType) type;
        Class<T> aClass = (Class<T>) paramType.getActualTypeArguments()[0];
    }
}


我收到此运行时错误


  无法将java.lang.Class强制转换为java.lang.reflect.ParameterizedType


怎么了?

最佳答案

顾名思义,getGenericSuperclass method返回一个Type,它表示该类的超类,而不是类本身。

在这里,typeClass而不是ObjectTestClass对象。

要获取您自己的类的类型参数,请使用the getTypeParameters method

09-05 01:32
查看更多