+-

所以我有一个像这样的BasePresenter类. BaseMvpView是一个接口
open class BaseMvpPresenter<View : BaseMvpView> {
}
我正在尝试创建一个用BaseMvpPresenter进行参数化的BaseMvpActivity类,如下所示:
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
}
希望这可以帮助 :)
点击查看更多相关文章
转载注明原文:android-Kotlin-声明具有泛型类型的泛型类 - 乐贴网