次のコード スニペットでエラーが発生します:
Object[] a = new Object[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
エラー、 「java.lang.ClassCastException: [Ljava.lang.Object;Cannot be Cast to [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);
あるいは、配列が次の正しいコードのように、要素はすべて整数型です:
Object[] a = new Integer[1]; Integer b=1; a[0]=b; Integer[] c = (Integer[]) a;
以上がオブジェクト配列を整数配列にキャストすると ClassCastException が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。