3 回答

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個贊
Ross,你也可以使用Arrays.copyof()或Arrays.copyOfRange()。
Integer[] integerArray = Arrays.copyOf(a, a.length, Integer[].class);
Integer[] integerArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);
這里擊中的原因ClassCastException是你不能將數(shù)組Integer視為數(shù)組Object。Integer[]是一個子類型Object[]但Object[]不是Integer[]。
以下也不會給出一個ClassCastException。
Object[] a = new Integer[1];
Integer b=1;
a[0]=b;
Integer[] c = (Integer[]) a;

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個贊
您無法將Object
數(shù)組轉(zhuǎn)換為Integer
數(shù)組。你必須循環(huán)遍歷a的所有元素并單獨(dú)拋出每個元素。
Object[] a = new Object[1];Integer b=1;a[0]=b;Integer[] c = new Integer[a.length];for(int i = 0; i < a.length; i++){ c[i] = (Integer) a[i];}
編輯:我相信這個限制背后的基本原理是,在進(jìn)行轉(zhuǎn)換時,JVM希望在運(yùn)行時確保類型安全。由于數(shù)組Objects
可以是任何其他內(nèi)容Integers
,因此JVM必須執(zhí)行上述代碼正在執(zhí)行的操作(單獨(dú)查看每個元素)。語言設(shè)計(jì)者決定他們不希望JVM這樣做(我不確定為什么,但我確定這是一個很好的理由)。
但是,您可以施放亞型陣列到陣列父(例如Integer[]
到Object[]
)!

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個贊
或者執(zhí)行以下操作:
... Integer[] integerArray = new Integer[integerList.size()]; integerList.toArray(integerArray); return integerArray;}
添加回答
舉報(bào)