繁体   English   中英

Kotlin - 使用类型param声明泛型类,该类是通用的

[英]Kotlin - declare a generic class with a type param which is generic

所以我有一个像这样的BasePresenter类。 BaseMvpView是一个界面

open class BaseMvpPresenter<View : BaseMvpView> {
}

我正在尝试创建一个BaseMvpActivity类,该类使用BaseMvpPresenter进行参数化,如下所示:

abstract class BaseMvpActivity<T : BaseMvpPresenter> : BaseActivity(), BaseMvpView {
}

但是我收到以下错误:

One type argument expected for class BaseMvpPresenter<View: BaseMvpView> 

我该如何正确地宣布这个? 我希望能够像这样使用BaseMvpActivity:

abstract class BaseMvpActivity<T : BaseMvpPresenter<U>, U : BaseMvpView> : BaseActivity(), BaseMvpView {

    abstract var presenter: T

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        presenter.onViewCreated(this)
    }

    override fun onDestroy() {
        presenter.onViewDestroyed()
        super.onDestroy()
    }
}

您需要将参数传递给BaseMVPPresenter 您可以按如下方式向抽象类添加第二个参数

abstract class BaseMvpActivity<V: BaseMvpView, T : BaseMvpPresenter<V>> : BaseActivity(), BaseMvpView {
}

所以,假设您正在创建一个显示帖子的视图,那么您将执行以下操作:

class Activity : BaseMVPActivity<PostsView, PostPresenter<PostView>() {
    //Here comes your code
}

希望这可以帮助 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM