我是 Java 的新手。如何在 Java 中将 — 转换为 List<Integer>
int[]
I’m confused because List.toArray()
actually returns an Object[]
, which can be cast to neither Integer[]
nor int[]
.
现在我正在使用一个循环来这样做:
int[] toIntArray(List<Integer> list) {
int[] ret = new int[list.size()];
for(int i = 0; i < ret.length; i++)
ret[i] = list.get(i);
return ret;
}
有更好的方法吗?
这类似于问题 How can I convert int[] to Integer[] in Java? .
原文由 unknown 发布,翻译遵循 CC BY-SA 4.0 许可协议
不幸的是,由于 Java 处理基本类型、装箱、数组和泛型的性质,我不认为真的 有 更好的方法来做到这一点。尤其是:
List<T>.toArray
将无法工作,因为没有从Integer
到int
的转换int
作为泛型的类型参数,因此它 必须 是int
特定的方法(或使用反射来进行讨厌的欺骗的方法)。我相信有些库为所有原始类型自动生成了这种方法的版本(即有一个为每种类型复制的模板)。这很丑陋,但恐怕就是这样:(
即使
Arrays
类在泛型出现在 Java 之前就出现了,但如果今天引入它,它仍然必须包含所有可怕的重载(假设您想使用原始数组)。