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
请各位大哥帮忙分析分析
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你不是说了问题在哪里了吗?
就是在这个循环引用上,你构造A的时候需要一个B,在构造需要的B的时候,又需要构造一个新的A,然后这个A又需要构造另一个新的B,这个新的B又需要A。。。
解决这个问题,你需要一个默认的构造参数,里面什么都不需要的,然后构造出两个空对象再去相互引用。
死循环,溢出
过度耦合和依赖导致的,这就是为什么会有Spring的诞生