作为一种习惯,我通常会避免将内容保留在静态方法中,以便在我的 java 项目中进行测试和易用性。然而,在过去,我不得不围绕我的主类使用静态和非静态方法的困惑组合,因为我只知道创建该类的非静态实例的一种方法。通常,我将其作为全局变量执行,而不是在每个方法中加载类方法。
举个例子,假设我有 MainGUI 和 ProjMain 类。在 ProjMain 中,我使用全局变量:
private MainGUI gui = new MainGUI();
这非常有效,但是如果我想从 MainGUI 类访问 ProjMain 类中的方法,我自然也会这样做。
private ProjMain project = new ProjMain();
在此,我创建了一个 StackOverflowError。是否有一种简单的方法可以将类的实例作为变量获取,而不必将变量放入单独的方法(而不是全局方法)中?
最佳答案
Hovercraft 的解决方案非常好,我这里还有一个给你:
如果你有很多相互引用的类,你应该考虑为它们提取一个更高的层,更高层的类应该如下所示:
class HigherLayer {
public void dosomething(ProjMain pm, MainGUI mg){
pm.hello(mg);
mg.bye(pm);
}
}
并从 ProjMain 和 MainGUI 中删除全局变量,以减少它们的耦合。
关于java - 使一切都非静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15171035/