java:(String [])List.toArray()给出ClassCastException

加夫里尔:

以下代码(在android中运行)始终在第三行中给我ClassCastException:

final String[] v1 = i18nCategory.translation.get(id);
final ArrayList<String> v2 = new ArrayList<String>(Arrays.asList(v1));
String[] v3 = (String[])v2.toArray();

当v2为Object [0]以及其中包含字符串时,也会发生这种情况。知道为什么吗?

MeBigFatGuy:

这是因为当您使用

 toArray() 

它返回一个Object [],该对象不能转换为String [](即使内容是String),这是因为toArray方法仅获得一个

List 

并不是

List<String>

因为泛型仅是源代码,在运行时不可用,因此无法确定要创建哪种类型的数组。

toArray(new String[v2.size()]);

分配正确类型的数组(String []和正确大小)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Collection.toArray()java.lang.ClassCastException

Java List toArray(T [] a)实现

Java List <T> T [] toArray(T [] a)实现

从List <String>转换为List <Character> Java

在Java中将List <String>转换为String []

在Java 8中从List <String>到String ..

在Java 8中从List <String>到String ..

收集HashMap <String,List <String >> Java 8

List <Map <String,String >>替代(Java)

为什么List <String> .toArray()返回Object []而不返回String []?如何解决这个问题?

Java-8流:将List <{String,List <String>}>转换为Map <String,List <String >>

Java /从Observable <List <String >>转换为List <String>

从 Java 中的 Flux<List<String>> 转换为 Mono<List<String>>

List <List <String >>与String [] []

Java将List <String>转换为Map <String,String>

List.toArray(Object [])性能

Java8 - 如何将 List<List<String>> 添加到 List<List<String>>

为什么Java的名单有“List.toArray()”,但数组没有“Array.toList()”?

為什麼 Java 在使用 List.toArray 時向數組插入 null

Java:将List <Integer>转换为String

Java 8流到Map <Integer,List <String >>

Java 中 List<String> 中的数据框

在Java中将List <Object>转换为String []

Java 8流到Map <K,List <String>

Collectors.toMap给出编译错误(String,List <String)不适用于参数

对List <List <String >> Java排序有问题吗?

在Java中将List <Enum>转换为List <String>

Java 8 List <K>到Map <K,List <String >>

在Java中将JSON转换为List <List <String >>