问题:获取C类中A的子类(如下图H类)的参数化构造函数引用。
Class A<T extends B> {
public A(T objectT, D objectD, E objectE, F objectF) {
}
public T aMethodWithTAsReturnType();
}
Class B { }
Class C<T extends A<?>> {
private Constructor<?> classAConstructor;
public C(Class<T> classA) {
classAConstructor=classA.getConstructor(B.class, D.class,E.class,F.class)
}
}
Class H extends A<X> {
public H(X objectX, D objectD, E objectE, F objectF) {}
}
Class X extends B {}
new C(new H(objectX,objectD,objectE,objectF));
上面的代码配置会导致NoSuchMethodException
一个新的 Class C 对象被创建,因为它找不到 Class A 的构造函数
我现在正在尝试使用:
Method methodInA = classA.getMethod('aMethodWithTAsReturnType')
Class<?> TClassInA = methodInA.getReturnType();
作为行中的替代品,B.class
因为classA.getConstructor
我猜这就是问题所在,因为 B 类是 T 的超类型(在 A 类中)。
但是...当我使用 methodInA.getReturnType() 它返回 B.class!而不是扩展 B 的类。然后我找到了一个getGenericReturnType()
方法,但它返回一个 Type 对象。