线程 "main" java.lang.ClassCastException 中的异常:[我无法转换为 java.lang.Integer

Exception in thread "main" java.lang.ClassCastException: [I cannot be cast to java.lang.Integer

List<Integer> P = new ArrayList(Arrays.asList(p)); // Copies array p into Arraylist P
P.sort(null);
List<Integer> kk = new ArrayList();
kk.set(0, P.get(0)+k); //Exception generated on this line

我不知道为什么我不能这样设置。谁能帮我解决这个问题? 谢谢

如果 p 是原始数组 int[]Arrays.asList(p) 将 return 一个列表,其单个元素是 int[]。这可以解释为什么 P.get(0) 不能转换为整数。

p 更改为 Integer[]Arrays.asList() 将生成您想要的列表。

它还允许您更改此行:

List<Integer> P = new ArrayList(Arrays.asList(p));

List<Integer> P = Arrays.asList(p);

您应该避免将原始类型分配给泛型类型。这样,当您将错误类型的列表分配给 P(更容易查找和修复)时,您会得到编译错误而不是运行时错误。