今天就跟大家聊聊有關(guān)如何解決Java循環(huán)依賴的問題,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
最近看到一個問題:如果有兩個類A和B,A類中有一個B的對象b,B類中有一個A的對象a,那么如何解決這兩個類的相互依賴關(guān)系呢,幾天就給大家說一下Java的循環(huán)依賴,raksmart服務器。
舉個栗子1:
可以看到A類的構(gòu)造方法中,new了一個B的對象,同時B類的構(gòu)造方法中,new了一個A的對象。
如果此時我們運行該類的話,會報如下錯誤:
Exception in thread “main” java.lang.StackOverflowError
問題出現(xiàn)的原因在于A類和B類之間出現(xiàn)了循環(huán)依賴。
那么是否有方法可以解決這個問題呢?答案是:有
舉個栗子2:
運行例子2,運行結(jié)果為:
BB
AA
AA
BB
在例子2中,testa和testb創(chuàng)建時調(diào)用的是類A和類B的默認構(gòu)造方法,創(chuàng)建了類A和類B的實例。
然后將B的實例注入到類A中。testa.b = testb;
將A的實例注入到類B中。testb.a = testa;
testa.print()調(diào)用b.printA();b.printA()調(diào)用a.printA();a.printA()顯示結(jié)果為AA
我們通過屬性注入的方法,使得類A和類B不在出現(xiàn)例子1中的錯誤,并且使得兩個相互依賴的類A和B可以調(diào)用相互依賴的方法。
事實上,spring中也是通過依賴注入的方法來解決類的相互依賴問題。
看完上述內(nèi)容,你們對如何解決Java循環(huán)依賴的問題有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道,感謝大家的支持。
當前文章:如何解決Java循環(huán)依賴的問題-創(chuàng)新互聯(lián)
文章URL:http://aaarwkj.com/article14/icode.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計、軟件開發(fā)、品牌網(wǎng)站設計、微信公眾號、域名注冊、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容