我需要创建一个基类来实现几个带有大量方法的接口,例如下面的例子。
是否有更简单的方法来委派这些方法调用而无需创建大量重复方法?
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. */
}
答案 0 :(得分:78)
如上所述,没有办法。但是,有点像IDE可以自动生成委托方法。例如Eclipse可以做到。首先设置一个模板:
public class MultipleInterfaces implements InterFaceOne, InterFaceTwo {
private InterFaceOne if1;
private InterFaceTwo if2;
}
然后右键单击,选择 Source>生成委派方法并勾选if1
和if2
字段,然后点击确定。
另见以下屏幕:
答案 1 :(得分:6)
实现多个界面有一种方法。
只需从另一个接口扩展一个接口或创建扩展预定义接口的接口 例如:
public interface PlnRow_CallBack extends OnDateSetListener {
public void Plan_Removed();
public BaseDB getDB();
}
现在我们有扩展另一个接口的接口,以便在out类中使用这个实现两个或更多接口的新接口
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() {
}
}
希望这会有所帮助
答案 2 :(得分:5)
不幸的是:没有。
我们都急切地等待extension methods
的Java支持答案 3 :(得分:0)
没有好办法。您可以使用具有目标方法的处理程序的代理,并将其他所有内容委托给它们。当然,你必须使用工厂,因为没有构造函数。