泛型的 Kotlin MVP 实现问题
Kotlin MVP implementation issue with generics
尝试用 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 中有一些关于泛型的问题需要修复,但我不知道是什么。
感谢任何帮助,
谢谢
第一个代码块中的第一个 class 应定义为
abstract class BaseActivity<P : BasePresenter<out BaseView>> : BaseView, AppCompatActivity() {
//...
}
键是 BaseView
上的 out
修饰符。
尝试用 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 中有一些关于泛型的问题需要修复,但我不知道是什么。
感谢任何帮助, 谢谢
第一个代码块中的第一个 class 应定义为
abstract class BaseActivity<P : BasePresenter<out BaseView>> : BaseView, AppCompatActivity() {
//...
}
键是 BaseView
上的 out
修饰符。