使用Java实现多个接口 - 有一种委托方式吗?

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并勾选两者if1if2字段,然后单击OK.

另请参见以下屏幕:

替代文字


替代文字


替代文字

  • 感谢BalusC和Lukas提供了如此快速有用的答案.我的项目基于Eclipse,所以我能够近乎实时地使用BalusC的答案!工作就像一个魅力,并为我节省了几个小时令人沮丧的工作.作为本次论坛的新用户,我对参与者的质量感到惊讶和高兴. (8认同)
  • 很棒的提示!我不知道这一点,将来会节省100个小时:) stackoverflow的好处:你也会从你不问自己的问题中学习! (6认同)

Jac*_*nan 6

有一种方法可以实现多个接口.

只需从另一个接口扩展一个接口或创建扩展预定义接口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)

希望这可以帮助


Luk*_*der 5

很不幸的是,不行.

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