Class X{
Class<B> object;
public setObject( Class<B> a ){....}
}
Interface B{}
Interface C extends B {}
このように X をインスタンス化します。
X x = new X();
x.setObject( C.class );
コードをビルドすると、 required Class<B>
foundと不平を言いますClass<C>
。C は B を拡張するので、C.class を使用できませんか? もしそうなら、誰かが理由を説明できますか?
Spring の XML ベースの Bean を使用して同じことを行い、問題なく動作します。Bean の定義は次のようになります。
<bean id="dummy" class="X">
<property name"object" value="C">
</bean>
これはうまくいきます。Java でのインスタンス化が失敗する理由がわかりません。