猿问

Java类交叉引用的问题

最近对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

请各位大哥帮忙分析分析


陪伴而非守候
浏览 767回答 3
3回答

阿晨1998

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

慕后森

死循环,溢出

猛跑小猪

过度耦合和依赖导致的,这就是为什么会有Spring的诞生
随时随地看视频慕课网APP

相关分类

Java
我要回答