classOf[TextOutputFormat] 在 Scala 中需要参数,但在 Java 中工作正常,没有任何参数 (TextOutputFormat.class)
classOf[TextOutputFormat] requires parameters in Scala but works fine in Java without any parameters (TextOutputFormat.class)
在 Java 中编写简单的 Map Reduce 程序时,下面的行工作正常。
job.setOutputFormatClass(TextOutputFormat.class)
但 Scala 中同样需要参数。
job.setOutputFormatClass(classOf[TextOutputFormat[<param>, <param>]])
为什么它的行为不同?
有什么我想念的吗?
在Java中,TextOutputFormat.class
是特殊语法。在 Scala 中,就语法而言,classOf[...]
只是一个通用方法调用(当然,编译器会对其进行特殊处理)。所以类型参数需要是一个类型,而 TextOutputFormat
本身不是一个类型(在 Java 中它是,称为原始类型,但它不是你通常应该使用的东西;Scala 不'支持原始类型)。写入 classOf[TextOutputFormat[_, _]]
.
在 Java 中编写简单的 Map Reduce 程序时,下面的行工作正常。
job.setOutputFormatClass(TextOutputFormat.class)
但 Scala 中同样需要参数。
job.setOutputFormatClass(classOf[TextOutputFormat[<param>, <param>]])
为什么它的行为不同? 有什么我想念的吗?
在Java中,TextOutputFormat.class
是特殊语法。在 Scala 中,就语法而言,classOf[...]
只是一个通用方法调用(当然,编译器会对其进行特殊处理)。所以类型参数需要是一个类型,而 TextOutputFormat
本身不是一个类型(在 Java 中它是,称为原始类型,但它不是你通常应该使用的东西;Scala 不'支持原始类型)。写入 classOf[TextOutputFormat[_, _]]
.