Kotlin中的Hadoop上下文类型参数

在Kotlin中实现Hadoop Mapper或Reducer时,我从编译器中得到一个有趣的矛盾。 任何时候使用Context对象,如果你不提供类型参数( <KEYIN, VALUEIN, KEYOUT, VALUEOUT> ),并且说“没有类型参数”,编译器会给出一个错误, DO提供类型参数。 任何想法发生了什么?

一个例子:

 // 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的内部类,因此当指定要扩展的Mapper的类型时,不应该隐含Context的类型,像在Java中一样?

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

一个例子:

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

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