Chu*_*her 65 java interface delegation
我需要创建一个基类,它实现了许多方法的接口,例如下面的例子.
是否有更简单的方法来委派这些方法调用而无需创建大量重复方法?
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. */
}
Run Code Online (Sandbox Code Playgroud)
Bal*_*usC 79
如上所述,没有办法.但是,有点像IDE可以自动生成委托方法.例如Eclipse可以做到.首先设置一个模板:
public class MultipleInterfaces implements InterFaceOne, InterFaceTwo {
private InterFaceOne if1;
private InterFaceTwo if2;
}
Run Code Online (Sandbox Code Playgroud)
然后右键单击,选择Source> Generate Delegate Methods并勾选两者if1和if2字段,然后单击OK.
另请参见以下屏幕:



有一种方法可以实现多个接口.
只需从另一个接口扩展一个接口或创建扩展预定义接口Ex的接口:
public interface PlnRow_CallBack extends OnDateSetListener {
public void Plan_Removed();
public BaseDB getDB();
}
Run Code Online (Sandbox Code Playgroud)
现在我们有扩展另一个接口的接口在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() {
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助
| 归档时间: |
|
| 查看次数: |
245329 次 |
| 最近记录: |