“Catalog”是一个存储“Item”对象集合的类。为此,我选择使用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;
}
那么我做错了什么?
答案 0 :(得分:3)
Catalog
需要实施Iterable<Item>
,其iterator()
方法需要返回Iterator<Item>
。
答案 1 :(得分:3)
public class Catalog implements Iterable<Item>{
public Iterator<Item> iterator(){
return itemList.iterator();
}
答案 2 :(得分:0)
确保它实现Iterable<Item>
,而不仅仅是Iterable
。
答案 3 :(得分:0)
需要实施Iterable<Item>
。
答案 4 :(得分:0)
您需要为迭代器
指定一个类型参数public Iterator<Item> iterator() {
Iterator<Item> itr = itemList.iterator();
return itr;
}
当Catalag implements Iterable
确定implements Iterable<Item>
时。
答案 5 :(得分:0)
它应该实现:
Iterable<Item>
(注意参数)
答案 6 :(得分:0)
尝试类似:
for(Item item : catalog.itemList) {
item.getProperty();
// ... and so on.
}
因为Catalog
类不可迭代,但是它的itemList List是。