Kotlin中的Hadoop Context类型参数

时间:2016-02-18 20:20:22

标签: hadoop kotlin

在Kotlin中实现Hadoop Mapper或Reducer时,我从编译器中得到了一个有趣的矛盾。每次使用Context对象时,编译器都会给出一个错误,说明&#34; 4类型参数预期&#34;如果你不提供类型参数(<KEYIN, VALUEIN, KEYOUT, VALUEOUT>),并说&#34;没有期望的类型参数&#34;如果你提供类型参数。任何想法在这里发生了什么?

一个例子:

// 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会使其编译,但由于ContextMapper的内部类,因此在指定时不应隐含Context的类型您正在扩展的Mapper的类型,就像在Java中一样?

1 个答案:

答案 0 :(得分:3)

Kotlin期待Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>上的“4种类型参数”而不是Context中的Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>.Context

一个例子:

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

可能/可能隐含Context的类型参数。我建议在Kotlin YouTrack中创建一个问题。