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