Java 类可以是方法的参数吗?
几天以来,我一直在努力理解hadoop mapreduce程序。我看到了以下声明Java 类可以是方法的参数吗?,java,class,hadoop,parameter-passing,Java,Class,Hadoop,Parameter Passing,几天以来,我一直在努力理解hadoop mapreduce程序。我看到了以下声明 conf.setInputFormat(TextInputFormat.class); 我不质疑这一声明的合法性,因为该计划运行时没有任何问题。有人能解释一下为什么TextInputFormat.class是输入而不是text input format类型的对象吗?我也可以对其他方法使用相同的约定吗?在什么情况下它会失败 这是setinputformat的签名 <http://hadoop.apache.o
conf.setInputFormat(TextInputFormat.class);
我不质疑这一声明的合法性,因为该计划运行时没有任何问题。有人能解释一下为什么TextInputFormat.class是输入而不是text input format类型的对象吗?我也可以对其他方法使用相同的约定吗?在什么情况下它会失败
这是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.
setInputFormat(ClassYes)您可以将该类作为参数传递。
下面是如何将类作为参数传递的简短示例:
public void foo(Class obj){
Object ob = obj.newInstance();
}
是的,您可以将该类作为参数传递。
下面是如何将类作为参数传递的简短示例:
public void foo(Class obj){
Object ob = obj.newInstance();
}
映射器和还原器需要知道什么样的格式。它们不需要实际的句柄。每个映射器/还原器都将使用类来实例化它们自己的反射。这是给某人一个锤子和告诉某人使用锤子之间的区别。您的特定示例是使用锤子的说明ammer.签出一个应用程序的反射。签出一个应用程序的反射。是公共void foo(Someclass obj){}与公共void foo(Someclass.class)相同{}是公共void foo(Someclass obj){}与公共void foo(Someclass.class)相同{}