在Java中将一个ArrayList.toArray()类型转换为普通数组

时间:2010-05-20 10:50:09

标签: java arrays casting

我在执行以下操作时遇到了一些麻烦:

int[] tmpIntList = (int[])MyArrayList.toArray(someValue);

MyArrayList仅包含数字。我收到类型转换错误,因为ArrayList只返回Object[],但为什么不能将它变成int[]

3 个答案:

答案 0 :(得分:4)

ArrayList不能包含int值,因为它由Object[]支持(即使是适当的通用)。

你最接近的将是Integer[] - 无法投射到int[]。您必须单独转换每个元素。我相信有些库可以为所有原始类型实现这些转换。

基本上问题是Java泛型不支持基本类型。

答案 1 :(得分:3)

如果您真的需要,

ArrayUtils.toPrimitive(..)会在Integer[]int[]之间进行转换。 (apache commons-lang

所以:

int[] tmpIntList = ArrayUtils.toPrimitive(MyArrayList.toArray(someValue));

答案 2 :(得分:0)

而不是只包含这个单一方法调用的apache-commons,你可以使用 Integer[]

@Bozho,感谢这位建议的配偶。