给定两个类,相互创建每个类的对象会导致StackOverflow异常

Abh*_*kar 0 java project-management object

给定两个类,相互创建每个类的对象会导致StackOverflow异常.这是一个JAVA项目顺便说一句.

我的项目中有多个类,并且对于使用其他类,我想我会创建另一个类的对象并使用它.

假设我有类Main和类GUI.我在MAIN中创建了GUI对象并对其进行了初始化.同样,我在GUI中创建了一个MAIN对象并对其进行了初始化.

现在这给了我一个Stack Overflow Exception,因为构造函数调用正在进行递归.

我该怎么做呢?

我能想到的一个可能的解决方案是创建一个类STATIC的变量和方法.

还有其他方法吗?请建议.

Mic*_*sel 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;
   }
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用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);
}
Run Code Online (Sandbox Code Playgroud)