作为一种习惯,我通常避免在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中删除全局变量,以减少耦合。