【问题标题】:Kotlin MVP implementation issue with generics泛型的 Kotlin MVP 实现问题
【发布时间】:2019-05-11 15:19:41
【问题描述】:

尝试用 Kotlin 实现一个简单的 MVP 结构, 这是我的基类:

abstract class BaseActivity<P : BasePresenter<BaseView>> : BaseView, AppCompatActivity() {
//...
}

abstract class BasePresenter<V : BaseView>  {
//...
}

interface BaseView {
//...
}

并尝试将此结构与

class DummyActivity : BaseActivity<DummyPresenter>(), DummyView.View {
//...
}

class DummyPresenter : BasePresenter<DummyView.View>(), DummyView.UserActionListener {
//...
}

interface DummyView {

interface View : BaseView {
    fun displayLoading()
}

interface UserActionListener {
    fun onButtonClicked()
 }
}

但是我在 DummyActivity, BaseActivity() 中遇到错误:

我假设 BaseActivity 中有一些关于泛型的问题需要修复,但我不知道是什么。

任何帮助表示赞赏, 谢谢

【问题讨论】:

    标签: android generics kotlin android-mvp


    【解决方案1】:

    第一个代码块中的第一个类应该定义为

    abstract class BaseActivity<P : BasePresenter<out BaseView>> : BaseView, AppCompatActivity() {
    //...
    }
    

    键是BaseView 上的out 修饰符。

    【讨论】:

    • 恐怕这会破坏我在 BasePresenter 中的 attachView(view: V) 方法的调用,因为它说该方法不需要任何内容​​。
    • 您发布的代码在我添加out 修饰符后立即编译,如我的回答中所述。能否提供完整代码?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 2023-03-19
    • 2015-09-29
    相关资源
    最近更新 更多