在Kotlin中實現Hadoop Mapper或Reducer時,我從編譯器中得到一個有趣的矛盾。無論何時使用Context
對象,如果您不提供類型參數(<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
),並且如果您提供類型參數時顯示「沒有期望的類型參數」,則編譯器會提供一個錯誤,指出「期望4種類型參數」。任何想法發生了什麼?Kotlin中的Hadoop上下文類型參數
一個例子:
// gives "4 type arguments expected"
override fun setup(context: Context?) {
super.setup(context)
}
// gives "No type arguments expected"
override fun setup(context: Context<KeyIn, ValueIn, KeyOut, ValueOut>?) {
super.setup(context)
}
指定Mapper<KeyIn, ValueIn, KeyOut, ValueOut>.Context
使得它編譯,但由於Context
是一個內部類的Mapper
,不應該Context
的類型,當您指定的Mapper
你的類型暗示」重新擴展,就像在Java中一樣?
對於那些有興趣的人來說,Kotlin似乎並沒有在內部類中捕獲任何泛型。我在YouTrack上發佈了一張已分配的票:https://youtrack.jetbrains.com/issue/KT-11123,並且在內部類的問題中有泛型的父票:https://youtrack.jetbrains.com/問題/ KT-9208 – alhart