嘗試轉換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>
無論 v2 的內容為何(甚至是空數組),都會發生這種情況。
發生此錯誤因為 toArray() 傳回一個 Object[],而不是 String[]。泛型僅在編譯時可用,因此 Java 虛擬機器 (JVM) 無法確定要建立哪種陣列類型。因此,它預設為 Object[],無法轉換為 String[]。
要解決此問題,請使用 toArray(T[] a) 明確指定數組類型方法並提供所需的數組類型作為參數。例如,此程式碼將正確建立 String[]:
<code class="java">String[] v3 = v2.toArray(new String[v2.size()]);</code>
此方法可確保傳回的陣列具有正確的類型和大小。
以上是為什麼在 Android 中,當轉換為 String[] 時,List.toArray() 會拋出 ClassCastException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!