[问题] 关于自动装箱与自动强制转型问题

楼主: 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