Java集合通過值引用造成的數據類型混淆問題

現在有下面一段代碼

                ArrayList list1=new ArrayList(); 
		ArrayList<String> list2=new ArrayList<String>();
		list1=list2;

我們new了兩個list集合,list1的數據類型應該是object,list2的數據類型應該是String,之後我們通過值引用將list1的引用變成了list2,那麼現在list1在使用add方法時,是不是應該和list2一樣只能添加String類型的數據呢。但是結果並不是我們想象的那樣

通過上圖我們能明顯看出此時的list1使用add方法時,參數類型並不是String類型的,而是object類型。也就是說list1使用的add方法還是它原來申明的那個Arraylist數據類型,而不是ArrayList<String>。但是值引用確實是發生了,這時list2的值會隨着list1變動而變動。

很無奈,後面通過Eclipse查看數據類型,發現下圖

通過上圖我們能看到list1在發生值引用時,其本身所屬數據類型並沒有發生改變,那麼我猜測,集合之間的引用,變量本身的數據類型並沒有發生改變,改變的只是變量所屬的值空間指針,以上只是個人猜測,懇請大佬能夠幫我解答一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章