尝试转换 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中文网其他相关文章!