我在执行以下操作时遇到了一些麻烦:
int[] tmpIntList = (int[])MyArrayList.toArray(someValue);
MyArrayList仅包含数字。我收到类型转换错误,因为ArrayList
只返回Object[]
,但为什么不能将它变成int[]
?
答案 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,感谢这位建议的配偶。