kotlin中的hadoop上下文类型参数

5sxhfpxr  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(430)

在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中一样?

nukf8bse

nukf8bse1#

kotlin在上需要“4个类型参数” Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT> 而不是在电视上 ContextMapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context .
举个例子:

override fun setup(context: Mappert<KeyIn, ValueIn, KeyOut, ValueOut>.Context?) {
    super.setup(context)
}

的类型参数 Context 应该/可以暗示。我建议在kotlin youtrack中创建一个问题。

相关问题