在kotlin中实现hadoopMap器或reducer时,我从编译器中得到了一个有趣的矛盾。任何时候你使用 Context
对象时,如果您不提供类型参数,编译器将给出一个错误,说明“需要4个类型参数”( <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中一样?
1条答案
按热度按时间nukf8bse1#
kotlin在上需要“4个类型参数”
Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>
而不是在电视上Context
在Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context
.举个例子:
的类型参数
Context
应该/可以暗示。我建议在kotlin youtrack中创建一个问题。