+-
android-Kotlin-声明具有泛型类型的泛型类
所以我有一个像这样的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-声明具有泛型类型的泛型类 - 乐贴网