返回泛型类的实例,我有一个抽象的泛型类的方法:如何正确覆盖科特林
abstract class BasePresenter<View, Router> {
var view: View? = null
var router: Router? = null
abstract fun OnStart()
abstract fun OnStop()
}
而且我有它的一个子类:
class NewsListPresenter : BasePresenter<NewsListView, MainRouter>() {
override fun OnStop() {
//
}
override fun OnStart() {
//
}
}
另外我有一个类与受保护的抽象方法:
protected abstract fun getPresenter() : BasePresenter<Any?, Any?>
而且我已经被覆盖在一个子类:
override fun getPresenter(): BasePresenter<Any?, Any?> {
return NewsListPresenter() as BasePresenter<Any?, Any?>
}
Android Studio突出显示了重写的函数,演员表示“此演员从未成功”。我尝试使用in Any
,out Any
和*
,它不起作用。当我尝试使用*
时,我无法在最初定义的类中使用getPresenter()
方法。 Android Studio抱怨类型不匹配:required without ?,找到BaseFragment。 在Java中,相同的代码可以很好地工作,我不认为这是Kotlin的问题。什么是正确的方式来实现这一点?
我在我的问题中描述过。使用星型投影,我无法为'getPresenter()。view'或者'getPresenter()。router')赋值。 Android Studio抱怨类型不匹配。 –
我怀疑你所描述的是一个编译器错误。我建议用一个例子报告问题。作为解决方法,您可以投射由'getPresenter()':'(getPresenter()as BasePresenter).view = something'返回的'BasePresenter <*, *>'。 –
mfulton26