我试图让一个类读取属于另一个类的一个实例的变量。正在读取的类仅在按下JButton时才会启动。从我的实验来看,我似乎无法访问任何类的变量(也许是因为编译器不确定第一类实际上会被启动?)
有没有人知道解决这个问题的方法?
抱歉模糊不清。
public class MainClass extends JComponent implements ActionListener{
JButton button = new JButton("Run Program");
MainClass INSTANCE = new MainClass() // create an instance of the main class to refer to later
constructor(){
this.add(button);
button.addActionEventListener(this);
}
actionPerformed(ActionEvent e){
if(e.getSource == button){
NextClass nextClass = new NextClass(); // class being read from
FinalClass finalClass = new FinalClass(); // class doing the reading
}
public class NextClass{
boolean state = true; // what is being read
constructor(){}
}
public class FinalClass{
constructor(){
if(MainClass.INSTANCE.nextClass.state == true){do something...}
}
}
基本上,按下按钮时会创建nextClass和finalClass实例。在Final类中,我想检查NextClass类的nextClass实例中的状态变量。我似乎无法访问状态变量或下一个类中的任何其他变量或函数。我的假设是因为没有保证nextClass实际上会被启动?
答案 0 :(得分:0)
您的MainClass INSTANCE
对象没有nextClass
字段。唯一的nextClass
名称作为actionPerformed
方法中的局部变量存在。为了做你想做的事情,我认为你只需要删除局部变量并使nextClass
成为MainClass
的字段。 (这有点难以辨别,因为您发布的代码比实际的Java更具伪代码。)
答案 1 :(得分:-1)
好的,我想我想出了怎么做。我无法在mainClass中初始化nextClass,因为它会先发制人地开始运行,并且只是声明它也没有做到这一点。
解决方案是为接受参数的下一个类创建一个新的构造函数。然而,构造函数是空的(没有方法可以调用或任何东西)。这样我就可以初始化nextClass而不会让它先发制人地运行它的方法。