java - 使一切都非静态

标签 java static

作为一种习惯,我通常会避免将内容保留在静态方法中,以便在我的 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/

相关文章:

java - 错误:emulator-5554 disconnected:

Java 使用冒泡排序对 ArrayList 进行排序

java - "Non-static method cannot be referenced from a static context"错误

Php 检查是否声明了静态类

java - 是否可以在java中的静态类中创建内部类的对象?

java - 在 hibernate 中创建外键映射

java - 星火Java : Upload file did't work in Spark java framework

java - 软键盘隐藏EditText

c# - 变量如何存储在类中及其执行流程?

java - 如何从一个 JFrame 中引用另一个 JFrame 中的变量?