类可以作为方法的参数吗?

时间:2013-10-11 19:37:29

标签: java class hadoop parameter-passing

我几天以来一直在努力了解hadoop mapreduce程序。我看到了以下声明。

conf.setInputFormat(TextInputFormat.class);

我不会挑战这句话的合法性,因为该程序没有问题。有人可以解释为什么TextInputFormat.class是输入而不是文本输入格式的对象?我也可以对其他方法使用相同的约定吗?在什么情况下它会失败?

这是setinputformat的签名。

<http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapred/JobConf.html#setInputFormat(java.lang.Class)>

setInputFormat(Class<? extends InputFormat> theClass) 

Set the InputFormat implementation for the map-reduce job.

2 个答案:

答案 0 :(得分:3)

映射器和缩减器需要知道格式的。他们不需要真正的手柄。每个映射器/缩减器将使用Class来使用反射来实例化它们自己。这是给别人锤子和告诉别人使用锤子的区别。您的具体示例是使用锤子的说明。

答案 1 :(得分:2)

是的,您可以将该类作为参数传递。 下面是如何将class作为参数传递的简短示例:

public void foo(Class obj){
    Object ob = obj.newInstance();
}