在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/網(wǎng)絡(luò)安全/ Kotlin 泛型問題

Kotlin 泛型問題

下面一段代碼,Java 中不會報錯,Kotlin 中卻報錯,請問如何解決?
就是我不想關(guān)心父類有哪些泛型參數(shù),在Java中直接繼承就好了,在Kotlin中怎么做呢?

Java
clipboard.png
Kotlin
clipboard.png

錯誤內(nèi)容:
One type argument expected for class BaseActivity<P : BasePresenter<, >> defined in kotlin.ui.other in file OtherActivity.kt

嘗試過使用 Any 和 星投射 ,也報錯,如下:
clipboard.png

clipboard.png

回答
編輯回答
夏夕

你 BaseActivity定義了P的泛型 必須繼承BasePresenter
很顯然 Any 和 * 都不能認(rèn)為一定繼承BasePresenter

2017年8月23日 16:06
編輯回答
薔薇花

應(yīng)該寫成

class OtherActivity:BaseActivity<BasePresenter<*, *>>

java中是一種泛型省略的寫法,應(yīng)該是kotlin不支持這樣省略吧

2018年8月3日 19:45
編輯回答
熊出沒

理解這個問題,要先理解Kotlin泛型,Kotlin語言中使用協(xié)變和逆變處理泛型,類似C#。當(dāng)前這個問題的解決方案使用兩個*代替Any即可。

完全搞懂Kotlin泛型,請關(guān)注微信公眾號 歐陽鋒工作室,查看文章 Kotlin語言中的泛型設(shè)計哲學(xué)

abstract class BasePresenter<V, E> {}

abstract class BaseActivity<P: BasePresenter<*, *>> {}

class OtherActivity<P: BasePresenter<*, *>>: BaseActivity<P>() {
}
2017年1月10日 22:00