十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
今天就跟大家聊聊有關(guān)如何解決Java循環(huán)依賴的問題,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
10多年的東港網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整東港建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“東港網(wǎng)站設(shè)計”,“東港網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。
最近看到一個問題:如果有兩個類A和B,A類中有一個B的對象b,B類中有一個A的對象a,那么如何解決這兩個類的相互依賴關(guān)系呢,幾天就給大家說一下Java的循環(huán)依賴,raksmart服務(wù)器。
舉個栗子1:
可以看到A類的構(gòu)造方法中,new了一個B的對象,同時B類的構(gòu)造方法中,new了一個A的對象。
如果此時我們運(yùn)行該類的話,會報如下錯誤:
Exception in thread “main” java.lang.StackOverflowError
問題出現(xiàn)的原因在于A類和B類之間出現(xiàn)了循環(huán)依賴。
那么是否有方法可以解決這個問題呢?答案是:有
舉個栗子2:
運(yùn)行例子2,運(yùn)行結(jié)果為:
BB
AA
AA
BB
在例子2中,testa和testb創(chuàng)建時調(diào)用的是類A和類B的默認(rèn)構(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)依賴的問題有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。