你应该通过你的一个类的实例,为其他类的构造函数。
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);
}
这是正确的,但它也是你通常应该做的方法静态的,当他们不访问任何本地信息的情况下 - 而且,作为Jigar乔希下面提到的,它可以使感,使之成为单例类如果你真的只需要你的整个应用程序中的一个。 – 2012-03-20 19:34:14
但后来我有第三类RecieveThread访问GUI类。我也需要一个物体。所以添加主参数将无法正常工作。 – 2012-03-20 19:43:15
@AhishekNandgaonkar您可以将一个GUI对象添加到RecieveThread的构造函数中。如果关系变得足够复杂,你可能希望使用创建所有没有实例的类,然后创建初始化每个类的setter。然后构建所有选项并调用所有setter的一段代码。 – 2012-03-20 19:47:43