gpt4 book ai didi

java - Java中的for-each尝试转换元素类型

转载 作者:行者123 更新时间:2023-12-01 18:31:27 26 4
gpt4 key购买 nike

在 ArrayList 上使用 for-each 构造时,我在 Java 中遇到问题。在一个名为 Graph 的类中,我有 protected 属性

protected ArrayList<Edge<E>> edges

在我的 Edge 类中,我有 protected 属性

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 给出了以下错误:

Type mismatch: Cannot convert from element type Object to Edge

我知道这可能是一个愚蠢的错误,源于我在代码中没有看到的东西,但我无法让它工作。谁能帮助我并解释为什么编译器尝试从对象转换为边缘,即使边缘应该是边缘的ArrayList?

最佳答案

您正在使用原始类型。代码应该是:

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());
}
}

What is a raw type and why shouldn't we use it?

关于java - Java中的for-each尝试转换元素类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23971871/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com