以下程式碼片段遇到錯誤:
Object[] a = new Object[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
錯誤, 「」java. lang.ClassCastException: [Ljava.lang.Object; 無法轉換為[Ljava.lang.Integer;”, 出現在最後一行。
原因:
出現問題的原因是您不能將整數陣列視為物件陣列。雖然 Integer[] 是 Object[] 的子類型,但 Object[] 不是 Integer[] 的子類型。
因此,嘗試將 Object[] 轉換為 Integer[] 會導致 ClassCastException。
替代程式碼:
要解決此問題,請使用以下方法之一:
Integer[] integerArray = Arrays.copyOf(a, a.length, Integer[].class); Integer[] integerArray = Arrays.copyOfRange(a, 0, a.length, Integer[].class);
或者,您可以透過確保陣列來防止ClassCastException元素皆為Integer 類型,如以下正確程式碼所示:
Object[] a = new Integer[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
以上是為什麼將物件數組轉換為整數數組會導致 ClassCastException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!