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() } } 

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

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

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

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

希望这可以帮助 :)