問題: クラス 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
、クラス A のコンストラクターが見つからないため、新しいクラス C オブジェクトが作成されたときにが発生します。
私は今使用しようとしています:
Method methodInA = classA.getMethod('aMethodWithTAsReturnType')
Class<?> TClassInA = methodInA.getReturnType();
クラスBは(クラスAの)Tのスーパータイプであるため、ここでの問題だと推測しているためB.class
、行内の の代わりとして。classA.getConstructor
ただし... methodInA.getReturnType() を使用すると、B.class が返されます。B を拡張したクラスではなく、getGenericReturnType()
メソッドを見つけましたが、Type オブジェクトを返します。