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

Override property types in child classes in java android

我正在尝试在 Android 中使用 MVP(模型-视图-演示者)模式实现我的应用程序,但我遇到了问题。我想要一个具有通用类型 class 属性 的抽象基础演示者 ViewInterface 但是在创建一个真正的演示者时我希望这个 属性 是RealPresenterView 类型,如果可能,无需覆盖所有演示者中的相同功能。

因为我可能没有正确解释自己,这里有一些代码来说明这个案例,首先是基本演示者:

abstract public class BasePresenter {
    protected ViewInterface view;

    protected ViewInterface getView() {
        return view;
    }
}

然后才是真正的主持人

public class RealPresenter {
    protected RealPresenterView view;

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

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

我读过 class 模板,但我还没有看到如何在这种情况下实施而不在每个演示者中添加功能。

您可以使用泛型:

BasePresenter

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

    protected T getView() {
        return view;
    }
}

RealPresenter

public class RealPresenter extends BasePresenter<RealPresenterView> {

}

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