java为什么不检测我的参数化类类型?
我根本不是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 cannot be cast to java.lang.reflect.ParameterizedType
怎么了
# 1 楼答案
顾名思义,^{} method 返回一个
Type
,它代表类的超类,而不是类本身这里,
type
是Object
的Class
对象,而不是TestClass
要获取自己的类的类型参数,请使用the ^{} method
# 2 楼答案
你误解了
getGenericSuperclass()
方法的作用。它是关于超类的泛型类型,而不是类本身下面是它的用法示例
该程序打印:
在Java中,由于类型擦除,您似乎想要做的事情(在运行时获取实例的泛型类型)实际上是不可能的