到底是什么原因造成的?我尝试在 Java 程序中创建的一种方法出现两个相互矛盾的错误
public void numberOfTrianglesIncidentToVertex(){
for(List<Integer> pairs: neighbors.get(2)){ // Type mismatch: cannot convert from element type Integer to List<Integer>
}
int fail = neighbors.get(2); // Type mismatch: cannot convert from List<Integer> to int
}
neighbors 变量在父类(super class)中声明如下:
List<List<Integer>> neighbors
= new ArrayList<List<Integer>>();
我不知道为什么它会在一行中告诉我它是一个整数并且不能转换为整数列表,然后在下一行改变主意并说完全相反的内容。这是哪个?
最佳答案
根据您声明的邻居,以下调用:
neighbors.get(2);
会给你一个List<Integer>
.
现在在第 1st 片段中,您正在尝试迭代返回值。所以,当你遍历 List<Integer>
时,你会得到 Integer
类型的值.而你正在使用 List<Integer>
类型循环变量。因此出现该错误消息。您不能分配 Integer
引用 List<Integer>
引用。
您应该将循环更改为:
for(int val: neighbors.get(2)) { // 'int' works in place of 'Integer', due to unboxing
}
但是,如果您迭代 neighbors
,你的循环会正常工作,因为那样你会得到 List<Integer>
迭代引用。
for(List<Integer> val: neighbors) {
}
在第 2nd 片段中,您直接分配获取的值 - List<Integer>
到int
原始。这显然是你做不到的。他们根本不兼容。因此出现错误消息。
分配应该是这样的:
List<Integer> list = neighbors.get(2);
关于java - 关于 Java 中类型不匹配的两个相互矛盾的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18286475/