toArray() の結果を String[] に変換できません
次のコードは、行 3 で常に ClassCastException をトリガーします。
<code class="java">final String[] v1 = i18nCategory.translation.get(id); final ArrayList<String> v2 = new ArrayList<>(Arrays.asList(v1)); String[] v3 = (String[])v2.toArray();</code>
このエラーは、v2 に要素が含まれているかどうか、またはそのコンテンツのみが含まれているかどうかに関係なく発生します。文字列で構成されます。この動作はどのように説明されますか?
Resolution
toArray() は Object[] を返しますが、Object[ の要素であっても String[] に直接キャストすることはできません。 ]は文字列です。これは、ジェネリックスがコンパイル時にのみ実装され、実行時には存在しないためです。その結果、toArray() は目的の配列型を判断できません。
この問題を修正するには、次の修正コードを使用します。
<code class="java">String[] v3 = v2.toArray(new String[v2.size()]);</code>
このバージョンでは、正しい型の配列が作成されます ( String[]) を適切な長さに設定し、ClassCastException.
を排除します。以上が`toArray()` の結果を `String[]` にキャストすると、なぜ `ClassCastException` が発生するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。