(String[])List.toArray() の ClassCastException を理解する
指定したコード スニペットは、キャストしようとすると ClassCastException を発生させます。文字列の ArrayList を String 配列に変換します。これは、Java の toArray() メソッドが String[] 配列と互換性のない Object[] 配列を返すために発生します。
この問題を解決するには、配列の種類を指定する必要があります。 toArray() を使用するときに作成します。この場合に使用する正しいメソッドは toArray(new String[v2.size()]) です。このメソッドは、適切なサイズの String[] 配列を割り当て、ArrayList の要素をそれに割り当てます。
例:
<code class="java">final String[] v1 = i18nCategory.translation.get(id); final ArrayList<String> v2 = new ArrayList<>(Arrays.asList(v1)); String[] v3 = (String[])v2.toArray(new String[v2.size()]);</code>
この更新されたコードでは、次のように明示的に指定します。 ClassCastException が発生せずにキャスト操作が確実に成功するように、String 配列を作成する必要があります。
以上が提供されたテキストに適合する英語の質問ベースのタイトルをいくつか示します。 * `List.toArray()` が `String[]` にキャストするときに `ClassCastException` をスローするのはなぜですか? * `ArrayList` を安全に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。