看板 java 關於我們 聯絡資訊
請問一下各位 ~ 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
ssccg: 不是,是因為println本來就有吃Object的overload版本 05/24 02:33
ssccg: 會印出Object參數的toString() 05/24 02:34
tas72732002: 但是Object的toString不是回傳類別名稱@記憶體位置嗎 05/24 09:39
tas72732002: 原來執行時會呼叫的是Integer和String提供的toString 05/24 09:54
tas72732002: 我之前以為父類做為參考因該是使用父類的method 05/24 09:55
Frozenmouse: 把它當成是 C++ 的 virtual function 就是了XD 05/24 10:14