2

Javaで、特定のクラスを拡張するためにジェネリックを必要とするオブジェクトがあり、そのクラスの拡張を使用してそれを実装したい場合、実際に独自のルールに違反していないことをJavaに通知する方法はありますか?それが意味をなさないと仮定した以下のコード例。

public interface WantedInterface extends StaticInterface<WantedObject>

public class WantedObject extends OlderObject

public class OlderObject extends UsefulObject

public interface StaticInterface<T extends UsefulObject>

だから私の質問は本質的に、私のWantedObjectが実際には直接ではないのに私のUsefulObjectを拡張することをStaticInterfaceに伝える方法はありますか?OlderObjectに多くの有用なコードが含まれていて、使用しているシーケンスが現在の状態を知りたいデータベースに書き込んでいるという理由だけで、WantedObjectをUsefulObjectの純粋な拡張として書き直す必要はありません。 OlderObjectの。これを書いているときに、WantedInterfaceでOlderObjectのインターフェイスを直接拡張できることに気づきましたが、これを回避する方法があるかどうかを知りたいと思います。

編集:さて、非常に奇妙なひねりを加えて、WantedObjectの拡張子をUsefulObjectに変更し、それを元に戻すことで問題を修正することができました。おそらく、問題は一時的なIDEの問題でしたか?私は日食を使用していますが、これに偶然問題がありますか?

4

1 に答える 1

4

A extends B推移的です。これは、ifA extends BB extends C、thenA extends Cも同様に言うための空想的な方法です。たとえば、コンパイラは次のコードで問題が発生しません。

UsefulObject uo = new WantedObject();
于 2012-07-12T14:08:25.413 に答える