用Java实现多个接口 – 有办法委托吗?

我需要创build一个基类,实现多个接口,有很多方法,下面的例子。

有没有一个更简单的方法来委派这些方法调用,而不必创build一个重复的方法部落?

public class MultipleInterfaces implements InterFaceOne, InterFaceTwo { private InterFaceOne if1; private InterFaceTwo if2; public MultipleInterfaces() { if1 = new ImplementingClassOne(); if2 = new ImplementingClassTwo(); } @Override public void classOneMethodOne { if1.methodOne(); } @Override public void classOneMethodTwo { if1.methodTwo(); } /** Etc. */ @Override public void classTwoMethodOne { if2.methodOne(); } @Override public void classTwoMethodTwo { if2.methodTwo(); } /** Etc. */ } 

如上所述,这是没有办法的。 不过,有点体面的IDE可以自动生成委托方法。 例如Eclipse可以做的。 首先设置一个模板:

 public class MultipleInterfaces implements InterFaceOne, InterFaceTwo { private InterFaceOne if1; private InterFaceTwo if2; } 

然后右键单击Source> Generate Delegate Methods并选中if1if2字段,然后单击OK

另请参阅以下屏幕:

替代文字


替代文字


替代文字

很不幸的是,不行。

我们都热切地等待Java对扩展方法的支持

有一种方法来实现多个接口。

只需从另一个接口扩展一个接口或创build扩展预定义接口的接口例如:

 public interface PlnRow_CallBack extends OnDateSetListener { public void Plan_Removed(); public BaseDB getDB(); } 

现在我们有扩展另一个接口的接口,在out class中使用这个接口实现了两个或多个接口

 public class Calculator extends FragmentActivity implements PlnRow_CallBack { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { } @Override public void Plan_Removed() { } @Override public BaseDB getDB() { } } 

希望这可以帮助

没有美丽的方式。 您可以使用具有目标方法的处理程序的代理,并将其他所有事务委托给它们。 当然,你将不得不使用一个工厂,因为没有构造函数。