Java类交叉引用的问题

发布于 2022-09-03 19:33:30 字数 655 浏览 15 评论 0

最近对Java中两个类交叉引用的问题有点迷惑,如下代码

类A

    public class A {
    
        private B  b;
    
        A(){
            b = new B();
            System.out.println("class A is building");
        }
    }

类B

public class B {

    private A a;

    B(){
        a = new A();
        System.out.println("class B is building");
    }

}

测试类

 public class Test {
    
     public static void main(String[] args) {
         A a = new A();
     }
    
 }

测试方法运行后,提示

Exception in thread "main" java.lang.StackOverflowError

请各位大哥帮忙分析分析

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

左秋 2022-09-10 19:33:30

你不是说了问题在哪里了吗?
就是在这个循环引用上,你构造A的时候需要一个B,在构造需要的B的时候,又需要构造一个新的A,然后这个A又需要构造另一个新的B,这个新的B又需要A。。。
解决这个问题,你需要一个默认的构造参数,里面什么都不需要的,然后构造出两个空对象再去相互引用。

日记撕了你也走了 2022-09-10 19:33:30

死循环,溢出

稚气少女 2022-09-10 19:33:30

过度耦合和依赖导致的,这就是为什么会有Spring的诞生

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文