【问题标题】:Override property types in child classes in java android在java android中覆盖子类中的属性类型
【发布时间】:2017-04-07 08:32:57
【问题描述】:

我正在尝试在 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,而无需在类中添加太多代码。这可能吗?

我已经阅读了类模板,但我还没有看到如何在这种情况下实现而不在每个演示者中添加函数。

【问题讨论】:

    标签: java android inheritance mvp


    【解决方案1】:

    你可以使用泛型:

    BasePresenter

    abstract public class BasePresenter<T extends ViewInterface> {
        protected T view;
    
        protected T getView() {
            return view;
        }
    }
    

    RealPresenter

    public class RealPresenter extends BasePresenter<RealPresenterView> {
    
    }
    

    请注意,我有一段时间没有用 java 编码了,但我认为没关系。

    【讨论】:

    • mmm 可能是 &lt;T implements ViewInterface&gt;&lt;T extends ViewInterface&gt;,这种语法给了我一个错误,但如果我改变它看起来就可以了
    • 是的,就是这样!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多