前兩天被大哥問到一個問題,即如何實現在Integer類型的ArrayList數組中添加String類型的數據、在String類型的ArrayList數組中添加Integer類型的數據,並且他們在輸出的過程中會有什么問題,為什么有這種問題。
以下通過代碼給大家展示一下:
Integer中添加String類型:

String類型中添加Integer類型:

這兩者代碼基本一致,都是通過反射的方式將數據添加到數組中從而避免報錯,但是在執行的過程中卻不一樣,以下是執行結果:

沒錯,在String類型的數組中添加Integer類型的數據在輸出的時候發生了強制類型轉換的錯誤,開始我也百思不得其解,后來我大哥給我看了看println函數的內部實現過程才煥然大悟,以下貼上代碼:
這是非String類型的輸出過程,可以看出,所有的輸出對象都通過String.valueof方法轉換成了String類型,故而Integer中加入String類型也都是通過String類型的方式輸出,不會報錯。 
這是String類型的輸出過程,可以看出,String類型的輸出沒有調用轉換方法,那么在String類型的數組中添加了Integer之后,會將Integer類型的數據當中String來輸出,自然會出現強制類型轉換的錯誤。

以上純屬個人見解,如有不同見解,敬請留言。
