所以我想从我的静态嵌套类中设置我的顶级类变量foo的值。我的最终目标是弄清楚如何将Map方法中的参数传递给我正在编写的MapReduce程序中的Reduce方法。我将代码简化为可读性所必需的元素。
这就是我所拥有的:
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
static String top = "foo";
public void setTop(String newValue) {
this.top = newValue;
}
public static class InnerClass {
String innerString = "bar";
Ideone newOne = new Ideone();
newOne.setTop(innerString ); //not legal
}
public static void main (String[] args) throws java.lang.Exception
{
System.out.println("Hello World " + top);
}
}
在一个实际的MapReduce程序中,嵌套类将是我的Mapper,顶级类将是整个MapReduce程序的名称,我最终会在我的Hadoop集群中运行它。
答案 0 :(得分:0)
问题不是静态内部类而不是嵌套类。它的类本身 - 这个将工作:
public static class InnerClass {
String innerString = "bar";
Ideone newOne = new Ideone();
{
newOne.setTop(innerString ); //not legal
}
}
或者在构造函数中调用setTop
。您在示例中选择的语法无效。
另一个提示:目前尚不清楚为什么你有一个静态变量top,它有一个非静态的setter,它是通过构造一个调用setter的dummy来从另一个类调用的。为什么不简单Ideone.top = innerString
;
答案 1 :(得分:0)
将您的InnerClass
定义替换为
public static class InnerClass {
public void setOuterClassTop() {
String innerString = "bar";
Ideone newOne = new Ideone();
newOne.setTop(innerString );
}
}
它可以通过调用setOuterClassTop()
方法来工作。