返回泛型類的實例,我有一個抽象的泛型類的方法:如何正確覆蓋科特林
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