無法將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>以下程式碼總是在第3 行觸發ClassCastException:
無論v2 是否包含任何元素或其內容是否僅包含字串,此錯誤都會持續存在。如何解釋此行為?
解決方案
toArray() 傳回一個 Object[],即使 Object[ 中的元素也無法直接轉換為 String[] ] 是字串。這是因為泛型僅在編譯時實現,在運行時不存在。因此,toArray() 無法確定預期的陣列類型。<code class="java">String[] v3 = v2.toArray(new String[v2.size()]);</code>
要修正此問題,請使用以下修改後的程式碼:
此版本建立正確類型的陣列 ( String[]) 具有適當的長度,消除了 ClassCastException。以上是為什麼將 `toArray()` 結果轉換為 `String[]` 會導致 `ClassCastException`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!