Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java android中重写子类中的属性类型_Java_Android_Inheritance_Mvp - Fatal编程技术网

在java android中重写子类中的属性类型

在java android中重写子类中的属性类型,java,android,inheritance,mvp,Java,Android,Inheritance,Mvp,我正试图在Android中使用MVP(Model View Presenter)模式实现我的应用程序,但我面临一个问题。我希望有一个抽象的基本演示者,其视图类属性为泛型类型ViewInterface,但在创建真正的演示者时,我希望此属性为realpenterview类型,如果可能的话,无需覆盖所有演示者中的相同功能 由于我可能没有正确地解释自己,这里有一些代码来说明这个案例,首先是基本演示者: abstract public class BasePresenter { protected

我正试图在Android中使用MVP(Model View Presenter)模式实现我的应用程序,但我面临一个问题。我希望有一个抽象的基本演示者,其视图类属性为泛型类型
ViewInterface
,但在创建真正的演示者时,我希望此属性为
realpenterview
类型,如果可能的话,无需覆盖所有演示者中的相同功能

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

abstract public class BasePresenter {
    protected ViewInterface view;

    protected ViewInterface getView() {
        return view;
    }
}
然后是真正的演讲者

public class RealPresenter {
    protected RealPresenterView view;

    // ...
    view.methodOnlyExistingInRealPresenterView();
}
我希望能够将RealPresenter中的视图用作RealPresenterView,而无需在类中添加太多代码。可能吗

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

您可以使用泛型:

BasePresenter
抽象公共类BasePresenter{
受保护的T视图;
受保护的T getView(){
返回视图;
}
}
真实演示者
公共类RealPresenter扩展了BasePresenter{
}

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

mmm可能是
,这个语法给了我一个错误,但如果我改变它,它看起来是有效的,就是它!
abstract public class BasePresenter<T extends ViewInterface> {
    protected T view;

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

}