作为一种习惯,我通常避免在Java项目中使用静态方法进行测试和易于使用的静态方法。但是,过去我不得不围绕主类使用混合使用静态方法和非静态方法的方法,因为我只知道一种创建类的非静态实例的方法。通常,我将其作为全局变量来执行,而不是在每个方法中加载类方法。

例如,假设我有MainGUI和ProjMain类。在ProjMain中,我使用全局变量:

private MainGUI gui = new MainGUI();


这很好用,但是,如果我要从MainGUI类访问的ProjMain类中有方法,我自然会去做。

private ProjMain project = new ProjMain();


在此,我创建一个StackOverflowError。是否有一种简单的方法可以将类的实例作为变量,而不必将变量放在单独的方法中而不是全局方法中?

最佳答案

气垫船的解决方案非常好,在这里我为您提供另一个解决方案:

如果您有很多相互引用的类,则应考虑为它们提取更高的层,更高层的类应如下所示:

class HigherLayer {
    public void dosomething(ProjMain pm, MainGUI  mg){
         pm.hello(mg);
         mg.bye(pm);
    }
}


并从ProjMain和MainGUI中删除全局变量,以减少耦合。

09-20 23:38