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