我試圖理解下面的代碼塊後面的執行邏輯:ClassCastException異常多立體的陣列中的Java
Integer[][] mdArray = new Integer[][] { { 1, 2 }, { 3, 4 }, { 5, 6 },
{ 7, 8 } };
List<Integer[]> mdArrayList = new ArrayList<Integer[]>();
// Iterate through every row of mdArray
for (Integer[] obj : mdArray) {
mdArrayList.add(obj);
}
/* Throws ClassCastException because it cannot resolve the final array size?
*
* i.e. it is a proper RTError.
*
*/
Integer[][] toArray = (Integer[][]) (mdArrayList.toArray());
以上代碼編譯好但在執行最後一行時在運行時將引發一個ClassCastException。我的理解是,JVM無法在運行時執行此代碼,因爲即使toArray()在mdArrayList中抽取了一組元素,目標類型也無法解析或提升爲有效的類型?
任何解釋將不勝感激!我只是想了解是否必須避免這種代碼執行,或者是否需要異常處理來滿足用戶需求。
'List.toArray'返回一個'對象[]'。它會如何做其他事情? –
@BoristheSpider是的,我知道它的確如此。我的問題是如何決定如何將其解析爲MD數組。感謝您的評論。 – ha9u63ar
Java中沒有這樣的MD數組。 –