classOf [TextOutputFormat]需要Scala中的参数,但在没有任何参数的Java中工作正常(TextOutputFormat.class)

时间:2017-10-07 19:09:27

标签: java scala hadoop mapreduce

在Java中编写一个简单的Map Reduce程序时,下面的行工作正常。

job.setOutputFormatClass(TextOutputFormat.class)    

但Scala中的相同内容是期待参数。

job.setOutputFormatClass(classOf[TextOutputFormat[<param>, <param>]]) 

为什么表现不一样? 有什么我想念的吗?

1 个答案:

答案 0 :(得分:2)

在Java中,TextOutputFormat.class是特殊语法。在Scala中,就语法而言,classOf[...]只是一个泛型方法调用(当然,它由编译器专门处理)。所以type参数需要是一个类型,而TextOutputFormat本身不是一个类型(在Java中它被称为原始类型,但它不是你通常应该使用的东西; Scala没有&#39} ; t支持原始类型)。写classOf[TextOutputFormat[_, _]]