使用Java实现多个接口 - 有没有办法委托?

2022-08-31 15:01:46

我需要创建一个基类,它使用许多方法实现多个接口,示例如下。

有没有更简单的方法来委派这些方法调用,而不必创建大量重复的方法?

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. */

}

答案 1

如前所述,没有办法。但是,一个稍微不错的IDE可以自动生成委托方法。例如,Eclipse可以做到。首先设置模板:

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

然后右键单击,选择源>生成委托方法,然后勾选两者和字段,然后单击确定if1if2

另请参阅以下屏幕:

alt text


alt text


alt text


答案 2

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

只需从另一个接口扩展一个接口,或创建扩展预定义接口 Ex 的接口:

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

现在我们有了扩展另一个接口的接口,只需使用这个实现两个或多个接口的新接口即可

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() {

    }
}

希望这有帮助