前兩天被大哥問到一個問題,即如何實如今Integer類型的ArrayList數組中添加String類型的數據、在String類型的ArrayList數組中添加Integer類型的數據,而且他們在輸出的過程當中會有什麼問題,爲何有這種問題。數組
如下經過代碼給你們展現一下:函數
Integer中添加String類型:對象
String類型中添加Integer類型:blog
這二者代碼基本一致,都是經過反射的方式將數據添加到數組中從而避免報錯,可是在執行的過程當中卻不同,如下是執行結果:List
沒錯,在String類型的數組中添加Integer類型的數據在輸出的時候發生了強制類型轉換的錯誤,開始我也百思不得其解,後來我大哥給我看了看println函數的內部實現過程才煥然大悟,如下貼上代碼:反射
這是非String類型的輸出過程,能夠看出,全部的輸出對象都經過String.valueof方法轉換成了String類型,故而Integer中加入String類型也都是經過String類型的方式輸出,不會報錯。 方法
這是String類型的輸出過程,能夠看出,String類型的輸出沒有調用轉換方法,那麼在String類型的數組中添加了Integer以後,會將Integer類型的數據當中String來輸出,天然會出現強制類型轉換的錯誤。im
以上純屬我的看法,若有不一樣看法,敬請留言。d3