3
下面是此代码:从原始型隐式转换为Object
int[] someArray = {0, 1, 2, 3};
//System.out.println(someArray[0].toString()); int cannot be dereferenced
// creating Object element with use of primitive element fails
//Object newObject = new Object(someArray[0]); constructor Object in class java.lang.Object cannot be applied to given types;
for(Object someObject : someArray)
{
// here int is casted to Object
System.out.println(someObject.toString()); // prints 0, 1, 2, 3
}
它是如何发生的是原始类型变量(阵列的元件)不能被明确地铸造在for循环此原语元素到对象,但是以某种方式被铸造成对象?
有趣的问题。我的猜测是增强的数组foreach循环的工作原理是创建某种内部迭代器类来填充给定的基本类型。即你不是直接在数组上迭代,而是在隐藏的'迭代器'上进行迭代。 –
millimoose
你并没有在你的评论中任何地方投射。 'int x = 5; System.out.println(((Object)x));'一定会正常工作,即使没有循环。 –
@ThomasJungblut问题是,foreach循环通常不会为你做这种投射。 – millimoose