为什么我的程序在使用foreach循环迭代ArrayList时显示这种类型的错误



[I不能强制转换为java.lang.Integer网址:com.cg.recure.ui.ArrayLisPr.main(ArrayLisPr.java:12(

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArrayLisPr {
public static void main(String[] args) {
int[] x={11,20,3,4,5};
List<Integer> po = new ArrayList(Arrays.asList(x));
for(Integer val:po){
System.out.println(val);
}
}
}

x是单个对象,它是int[],因此不能强制转换为Integer。如果删除中间变量并直接使用Arrays.asList,Java将能够将每个int自动装箱为一个单独的Integer

List<Integer> po = new ArrayList<>(Arrays.asList(11,20,3,4,5));

编辑:

如果要保留int[]引用,则必须手动将其转换为List<Integer>。这样做的一种方法是将其流式传输并装箱所有元素:

List<Integer> po = Arrays.stream(x).boxed().collect(Collectors.toList());

最新更新