最近對Java中兩個類交叉引用的問題有點迷惑,如下代碼類A public class A { private B b; A(){ b = new B(); System.out.println("class A is building"); } }類Bpublic 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請各位大哥幫忙分析分析
3 回答

阿晨1998
TA貢獻2037條經(jīng)驗 獲得超6個贊
你不是說了問題在哪里了嗎?
就是在這個循環(huán)引用上,你構(gòu)造A的時候需要一個B,在構(gòu)造需要的B的時候,又需要構(gòu)造一個新的A,然后這個A又需要構(gòu)造另一個新的B,這個新的B又需要A。。。
解決這個問題,你需要一個默認的構(gòu)造參數(shù),里面什么都不需要的,然后構(gòu)造出兩個空對象再去相互引用。
添加回答
舉報
0/150
提交
取消