0

明確にするために、次の設計を検討してください-

Interface MyIface{
 myInterfaceContract(someObject);
};

Class Child1 implements MyIface{
   myInterfaceContract(someObject){ //implemented }
   myChild1Action(){ //implemented }
}

Class Child2 implements MyIface{
   myInterfaceContract(someObject){ //implemented }
   myChild2Action(){ //implemented }
}

スプリング アノテーションを介してインターフェイス インジェクションを実現する方法を知っています。疑問は-インターフェースベースの注入が行われた場合、子クラスに直接実装されたメソッド、つまり myChild1Action()/myChild2Action() にアクセスするにはどうすればよいですか?

私は根本的に間違っているか、考えていますか?

4

1 に答える 1

1

あなたの考えは混乱していると言えます。インターフェースに基づいて注入している場合、それはインターフェースが必要なすべての機能を提供することを意味します。実装からのメソッドが必要な場合、そのインターフェイスは必要なものを提供しておらず、具体的な実装を注入する必要があります。

ほとんどの場合、instanceof を使用してクラスを検索し、追加のメソッドを呼び出すことができる場合、それは設計が壊れている兆候です。

「Finder」インターフェースを定義し、Child1 にもそれを実装させて、Bean を Finder フィールドと MyIFace フィールドに挿入すると役立つ場合があります。

于 2013-10-18T11:15:36.703 に答える