我有一个抽象函数,我想在 BaseActivity
中获取我的任何 Activity Presenters
protected abstract fun <T : BasePresenter<V>, V : BaseView> getPresenter(): T
所以我的函数应该只接受扩展 BasePresenter
的类,并且 View 扩展 BaseView
但是当我实现这个函数时,我收到一个错误
private lateinit var presenter: LauncherPresenter
override fun <T : BasePresenter<V>, V : BaseView> getPresenter(): T = presenter
Type mismatch.
Required: T
Found: LauncherPresenter
我知道这是一个愚蠢的问题,但我不明白我错在哪里。
最佳答案
您不需要在函数中声明泛型,因为它已经在顶部的 BaseActivity 中指定。
您的BaseActivity示例:
abstract class BaseActivity<T : BasePresenter<V>, V : BaseView>() :
AppCompatActivity(), BaseView {
protected abstract fun getPresenter(): T
}
其中 T 在顶部指定。
当您在 BaseActivity 的子级中实现函数时:
class LauncherActivity() :
BaseActivity<LauncherPresenter<LauncherView>, LauncherView>(), LauncherView {
private lateinit var presenter: LauncherPresenter
//your override method
protected override fun getPresenter(): LauncherPresenter = presenter
}
关于android - Kotlin 通用抽象函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51671303/