java toString方法導致程式棧崩潰原因

2021-09-09 07:11:50 字數 789 閱讀 1283

在模擬實現ioc過程中,因為想看看迴圈依賴注入的效果,就重寫了tostring方法,結果導致了棧崩潰。

大家都知道spring容器中的例項可以是單例的,這樣有利於管理物件。

那麼我們要在a中注入b,b中注入c,c中注入a,就會導致迴圈依賴。

public class classa 

public void setb(classb b)

@override

public string tostring() ';

}} @component

public class classb

public void setc(classc c)

@override

public string tostring() ';}}

@component

public class classc

public void seta(classa a)

@override

public string tostring() ';}}

通過重寫了tostring方法,我們只要隨便列印乙個物件,就會造成棧溢位。

原因分析,tostring方法中列印的其他物件的tostring會間接迴圈,導致你的方法一直在呼叫方法,且沒有返回,每次呼叫導致棧上公升,最後導致棧溢位,所以在使用tostring方法時需要注意到遞迴問題,不要造成了死遞迴。

JAVA toString()方法 學習札記

1.public class superman class kobe public string getkb public void setkb string kb 執行結果 schksnow20180826.kobe 759f31de如上可知,tostring 方法的作用是返回類名及其引用位址 但...

DataTable快速導到Excel方法

2017年10月12日 12 19 51 濤神 dev 閱讀數 1309 沒有格式要求,想快速匯出datatable資料到excel可以採用以下方式實現,開發人員在除錯過程中有時候也可以用來記錄比較。100w的資料匯出也就1 2秒的時間。void main for int i 0 i 1000000...

hive匯出資料導本地的方法

hive匯出查詢檔案到本地檔案的2種辦法 通過hql語句 可以將hive 中表的資料生成到指定的目錄。有時候 我們可以利用hive來生成統計的中間檔案 比原始檔小的多的 方法有如下2種 www.2cto.com 1.insert overwrite local directory 將結果輸出到指定的...