覆盖java android中子类中的属性类型

时间:2017-04-07 08:32:57

标签: java android inheritance mvp

我试图在Android中使用MVP(模型 - 视图 - 演示者)模式实现我的应用,但我遇到了问题。我希望有一个带有视图类属性的抽象基础展示器,它具有泛型类型ViewInterface但是在创建真正的展示者时,我希望此属性属于RealPresenterView类型,如果可以不需要在所有演示者中覆盖相同的功能。

由于我可能没有正确解释自己这里有一些代码来说明这个案例,首先是基本主持人:

abstract public class BasePresenter {
    protected ViewInterface view;

    protected ViewInterface getView() {
        return view;
    }
}

那么真正的主持人

public class RealPresenter {
    protected RealPresenterView view;

    // ...
    view.methodOnlyExistingInRealPresenterView();
}

我希望能够将RealPresenter中的视图用作RealPresenterView,而无需在类中添加太多代码。这可能吗?

我已经阅读了有关课程模板的信息,但在这种情况下我还没有看到如何在不添加每个演示者的功能的情况下实现。

1 个答案:

答案 0 :(得分:4)

您可以使用泛型:

BasePresenter

abstract public class BasePresenter<T extends ViewInterface> {
    protected T view;

    protected T getView() {
        return view;
    }
}

RealPresenter

public class RealPresenter extends BasePresenter<RealPresenterView> {

}

请注意,我在java中没有编写代码一段时间,但我认为没问题。