Apabila cuba menghantar 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();</code>
Ini berlaku tanpa mengira kandungan v2 (walaupun tatasusunan kosong).
Ralat ini berlaku kerana toArray() mengembalikan Objek[], bukan String[]. Generik hanya tersedia pada masa penyusunan, jadi Mesin Maya Java (JVM) tidak dapat menentukan jenis tatasusunan yang hendak dibuat. Oleh itu, ia lalai kepada Object[], yang tidak boleh dihantar ke String[].
Untuk menyelesaikan isu ini, nyatakan secara jelas jenis tatasusunan menggunakan toArray(T[] a) kaedah dan menyediakan jenis tatasusunan yang dikehendaki sebagai parameter. Sebagai contoh, kod ini akan mencipta String[] dengan betul:
<code class="java">String[] v3 = v2.toArray(new String[v2.size()]);</code>
Kaedah ini memastikan tatasusunan yang dikembalikan adalah daripada jenis dan saiz yang betul.
Atas ialah kandungan terperinci Mengapakah `List.toArray()` Melemparkan `ClassCastException` dalam Android Apabila Menghantar ke `String[]`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!