在ArrayList上使用for-each构造时,我遇到了Java问题。 在一个名为Graph的类中,我有受保护的属性
protected ArrayList<Edge<E>> edges
在我的Edge类中,我有受保护的属性
protected LinkedList<Connector<E>> pointers;
我在Edge类中尝试做的是定义一种方法,在屏幕上打印每个图形边缘的指针 g 。我尝试使用不同的方法每次都得到错误,然后我最终使用for-each循环(我认为这是最好的选择,因为我知道集合中我尝试迭代的元素的类型)。 我的代码如下:
public void printConnectors(Graph g){
for (Edge<E> e: g.edges){
System.out.println(e.iterator()); //I do have an iterator in my Edge class
}
}
这不起作用,Eclipse给了我以下错误:
类型不匹配:无法从元素类型Object转换为Edge
我知道这可能是一个愚蠢的错误,这些错误来自我在代码中看不到的内容,但我无法让它发挥作用。任何人都可以帮助我解释为什么编译器尝试从Object转换为Edge,即使edge应该是Edgeges的ArrayList吗?
答案 0 :(得分:4)
您正在使用原始类型。代码应该是:
public void printConnectors(Graph<E> g) { // use the generic type Graph<E> here,
// not the raw type Graph
for (Edge<E> e: g.edges) {
System.out.println(e.iterator());
}
}