Kotlin – 用泛型类型的参数声明泛型类

所以我有一个像这样的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() } } 

One Solution collect form web for “Kotlin – 用泛型类型的参数声明泛型类”

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

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

所以可以说,你正在创建一个视图来显示帖子,那么你会做这样的事情:

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

希望这可以帮助 :)

  • 嘲笑Kotlin的最后一场
  • 如何避免空检查
  • Firebase数据库查询设计
  • Kotlin和Firebase云function的update()方法
  • 在Kotlin中,我可以覆盖一些现有的运营商,但是如何创建新的运营商呢?
  • 未解决的参考:createPrintDocumentAdapter(Kotlin + Android)
  • null to listOf(),not null to listOf(value)in Kotlin in one liner?
  • Kotlin:运行Hello程序时得到ClassNotFoundException
  • 使用Anko SQLLite,检查数据库是否存在的最好方法是什么?
  • 如何在Kotlin中编写扩展函数?
  • 何时在Kotlin中使用内联函数?
  • Kotlin language will be the best programming language for Android.