用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并选中if1
和if2
字段,然后单击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() { } }
希望这可以帮助
没有美丽的方式。 您可以使用具有目标方法的处理程序的代理,并将其他所有事务委托给它们。 当然,你将不得不使用一个工厂,因为没有构造函数。