我根本不是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
,它表示该类的超类,而不是类本身。
在这里,type
是Class
而不是Object
的TestClass
对象。
要获取您自己的类的类型参数,请使用the getTypeParameters
method。