0

“目录”是一个存储“项目”对象集合的类。为此,我选择使用 List 集合。所以它看起来像:

public class Catalog {
     List<Item> itemList;

主类必须能够使用 for 循环访问 Item 元素,该循环将 Catalog 对象视为集合本身。假设有一个名为“catalog:”的目录对象

for (Item items : catalog) {
     //various operations involving item
}

问题:我收到不兼容的类型错误。

found: java.lang.Object
requird: Item

我的 Catalog 类实现了 Iterable 并有一个方法 iterator() 返回 List 的迭代器:

public Iterator iterator() {
    Iterator itr = itemList.iterator();
    return itr;
}   

那么我做错了什么?

4

7 回答 7

3

Catalog需要实现Iterable<Item>,其iterator()方法需要返回Iterator<Item>

于 2011-06-16T21:19:59.567 回答
3
public class Catalog implements Iterable<Item>{
public Iterator<Item> iterator(){
  return itemList.iterator();
}
于 2011-06-16T21:20:34.077 回答
0

确保它实施Iterable<Item>,而不仅仅是Iterable

于 2011-06-16T21:20:02.480 回答
0

它需要实施Iterable<Item>

于 2011-06-16T21:20:06.583 回答
0

您需要为迭代器指定类型参数

public Iterator<Item> iterator() {
    Iterator<Item> itr = itemList.iterator();
    return itr;
}   

以及何时Catalag implements Iterable确定implements Iterable<Item>

于 2011-06-16T21:20:25.313 回答
0

它应该实现:

 Iterable<Item>

(注意参数)

于 2011-06-16T21:21:39.560 回答
0

尝试类似:

for(Item item : catalog.itemList) {
    item.getProperty();
    // ... and so on.
}

因为你的Catalog类是不可迭代的,但它的 itemList List 是。

于 2011-06-16T21:23:54.203 回答