给定两个类,相互创建每个类的对象会导致StackOverflow异常。这是一个JAVA项目顺便说一句。
我的项目中有多个类,并且对于使用其他类,我想我会创建另一个类的对象并使用它。
假设我有类Main和类GUI。我在MAIN中创建了GUI对象并对其进行了初始化。同样,我在GUI中创建了一个MAIN对象并对其进行了初始化。
现在这给了我一个Stack Overflow Exception,因为构造函数调用正在进行递归。
我该怎么做?
我能想到的一个可能的解决方案是创建一个类STATIC的变量和方法。
还有其他解决方案吗?请建议。
答案 0 :(得分:6)
您应该将其中一个类的实例传递给另一个类的构造函数。
public class Main {
private final GUI gui;
Main() {
gui = new GUI(this);
}
}
public class GUI {
private final Main main;
public GUI(Main main) {
this.main = main;
}
}
您也可以使用setter而不是构造函数。我不喜欢这个选项,因为你失去了使变量最终的能力。
public class Main {
private GUI gui;
Main() {
}
public void setGui(GUI gui) {
this.gui = gui;
}
}
public class GUI {
private Main main;
public GUI() {
}
public void setMain(Main main) {
this.main = main;
}
}
public static void main(String[] args) {
Main main = new Main();
GUI gui = new GUI();
main.setGui(gui);
gui.setMain(main);
}
答案 1 :(得分:0)
Singleton? (如果适用于您的应用)