作者tas72732002 (葱头)
看板java
标题[问题] 关於自动装箱与自动强制转型问题
时间Sat May 23 23:52:06 2015
请问一下各位 ~
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://webptt.com/cn.aspx?n=bbs/java/M.1432396329.A.8CA.html
1F:→ ssccg: 不是,是因为println本来就有吃Object的overload版本 05/24 02:33
2F:→ ssccg: 会印出Object参数的toString() 05/24 02:34
3F:→ tas72732002: 但是Object的toString不是回传类别名称@记忆体位置吗 05/24 09:39
4F:→ tas72732002: 原来执行时会呼叫的是Integer和String提供的toString 05/24 09:54
5F:→ tas72732002: 我之前以为父类做为参考因该是使用父类的method 05/24 09:55
6F:推 Frozenmouse: 把它当成是 C++ 的 virtual function 就是了XD 05/24 10:14