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

作者: tas72732002 (蔥頭)   2015-05-23 23:52:06
請問一下各位 ~
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, 所以覺得奇怪
自動拆箱可以理解, 但也會自動強制轉型嗎 ?
作者: ssccg (23)   2015-05-24 02:33:00
不是,是因為println本來就有吃Object的overload版本會印出Object參數的toString()
作者: tas72732002 (蔥頭)   2015-05-24 09:39:00
但是Object的toString不是回傳類別名稱@記憶體位置嗎原來執行時會呼叫的是Integer和String提供的toString我之前以為父類做為參考因該是使用父類的method
作者: Frozenmouse (*冰之鼠*)   2015-05-24 10:14:00
把它當成是 C++ 的 virtual function 就是了XD

Links booklink

Contact Us: admin [ a t ] ucptt.com