[問題] 關於自動裝箱與自動強制轉型問題

看板java作者 (蔥頭)時間10年前 (2015/05/23 23:52), 編輯推噓1(105)
留言6則, 3人參與, 最新討論串1/1
請問一下各位 ~ ArrayList arr = new ArrayList(); arr.add("Hello"); arr.add("Kevin"); arr.add(1234678); for(int i = 0 ; i < arr.size() ; i++) { System.out.println(arr.get(i)); } 想請問一下arr.get(i)沒有造成編譯或執行錯誤是否執行了"自動強制轉型 + 自動拆箱" 因為ArrayList泛型沒有設定類型, 所以add的內容會被Object類型參考 , 回傳的也會是Object, 所以理論上因該要進行強制轉型 + 拆箱才不會出現錯誤 但我都沒有寫這些語法 EX : (Integer)arr.get(i).intValue, 所以覺得奇怪 自動拆箱可以理解, 但也會自動強制轉型嗎 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.34.181.227 ※ 文章網址: https://www.ptt.cc/bbs/java/M.1432396329.A.8CA.html

05/24 02:33, , 1F
不是,是因為println本來就有吃Object的overload版本
05/24 02:33, 1F

05/24 02:34, , 2F
會印出Object參數的toString()
05/24 02:34, 2F

05/24 09:39, , 3F
但是Object的toString不是回傳類別名稱@記憶體位置嗎
05/24 09:39, 3F

05/24 09:54, , 4F
原來執行時會呼叫的是Integer和String提供的toString
05/24 09:54, 4F

05/24 09:55, , 5F
我之前以為父類做為參考因該是使用父類的method
05/24 09:55, 5F

05/24 10:14, , 6F
把它當成是 C++ 的 virtual function 就是了XD
05/24 10:14, 6F
文章代碼(AID): #1LOA8fZA (java)
文章代碼(AID): #1LOA8fZA (java)