在 Kotlin 中实现 Hadoop Mapper 或Reducer 时,我从编译器中得到了一个有趣的矛盾。任何时候您使用Context
对象,如果您不提供类型参数(<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
),如果您确实提供类型参数,则显示“不需要类型参数”。你知道这里发生了什么吗?
一个例子:
// 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 期待“4 类型参数”Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
并且不在Context
in Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context
.
一个例子:
override fun setup(context: Mappert<KeyIn, ValueIn, KeyOut, ValueOut>.Context?) {
super.setup(context)
}
类型参数可能是Context
应该/可以暗示。我建议在中创建一个问题Kotlin YouTrack https://youtrack.jetbrains.com/issues/KT.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)