Spring接口注入-如何访问实现类特定的方法 为清晰考虑以下设计- Interface MyIface{ myInterfaceContract(someObject); }; Class Child1 implements MyIface{ myInterfaceContract(someObject){ //implemented } myChild1Action(){ //implemented } } Class Child2 implements MyIface{ myInterfaceContract(someObject){ //implemented } myChild2Action(){ //implemented } }

Spring接口注入-如何访问实现类特定的方法 为清晰考虑以下设计- Interface MyIface{ myInterfaceContract(someObject); }; Class Child1 implements MyIface{ myInterfaceContract(someObject){ //implemented } myChild1Action(){ //implemented } } Class Child2 implements MyIface{ myInterfaceContract(someObject){ //implemented } myChild2Action(){ //implemented } },spring,Spring,我知道如何通过spring注释实现接口注入。 怀疑是— 如果完成了基于接口的注入,那么如何访问直接在我的子类中实现的方法,即myChild1Action()/myChild2Action() 我到底是做错了还是想错了 我得说你的想法很混乱。如果您是基于接口进行注入的,那么这意味着接口为您提供了所需的所有功能。如果您需要实现中的方法,那么该接口不会提供您所需要的,而注入一个具体的实现是您需要做的 大多数情况下,如果您使用instanceof查找您拥有的类,以便可以调用一些额外的方法,那么这表明您的

我知道如何通过spring注释实现接口注入。 怀疑是— 如果完成了基于接口的注入,那么如何访问直接在我的子类中实现的方法,即myChild1Action()/myChild2Action()


我到底是做错了还是想错了

我得说你的想法很混乱。如果您是基于接口进行注入的,那么这意味着接口为您提供了所需的所有功能。如果您需要实现中的方法,那么该接口不会提供您所需要的,而注入一个具体的实现是您需要做的

大多数情况下,如果您使用instanceof查找您拥有的类,以便可以调用一些额外的方法,那么这表明您的设计被破坏了


您可能会发现定义一个“Finder”接口并让Child1实现该接口并将bean注入Finder字段和MyIFace字段很有帮助。

您可以使用
instanceof
并强制转换到适当的实现(Child1或Child2)。但是,您尝试这样做的事实可能意味着您的设计并不理想(您应该始终尝试为接口编写代码)…如果我的child1和child2需要一些特定的实现,那么可以做些什么,例如接口提供创建/更新/删除,但我的child1需要一些查找器以及C/U/D,child2需要一些其他功能。在这种情况下可以做些什么?