Java迭代问题

发布于 2024-11-16 05:32:39 字数 617 浏览 4 评论 0原文

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

public class Catalog {
     List<Item> itemList;

主类必须能够使用 for 循环访问 Item 元素,该 for 循环将 Catalog 对象视为集合本身。假设有一个名为“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;
}   

那么我做错了什么?

"Catalog" is a class that stores a collection of "Item" objects. I have chosen to use a List collection for this purpose. So it looks like:

public class Catalog {
     List<Item> itemList;

The main class must be able to access the Item elements with a for loop that treats a Catalog object like a collection itself. Assume a Catalog object named "catalog:"

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

Problem: I get the incompatible types error.

found: java.lang.Object
requird: Item

My Catalog class implements Iterable and has a method iterator() that returns an iterator for the List:

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

So what am I doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

千仐 2024-11-23 05:32:39

Catalog 需要实现 Iterable 并且它的 iterator() 方法需要返回 Iterator

Catalog needs to implement Iterable<Item> and its iterator() method needs to return Iterator<Item>.

安静被遗忘 2024-11-23 05:32:39
public class Catalog implements Iterable<Item>{
public Iterator<Item> iterator(){
  return itemList.iterator();
}
public class Catalog implements Iterable<Item>{
public Iterator<Item> iterator(){
  return itemList.iterator();
}
半葬歌 2024-11-23 05:32:39

确保它实现了 Iterable,而不仅仅是 Iterable

Make sure it implements Iterable<Item>, not just Iterable.

迷路的信 2024-11-23 05:32:39

它需要实现Iterable

It needs to implement Iterable<Item>.

仲春光 2024-11-23 05:32:39

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

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

,并且当 Catalag 实现 Iterable 时,请确保它实现 Iterable

You need to specify a type parameter for the iterator

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

and when Catalag implements Iterable make sure it implements Iterable<Item>.

水中月 2024-11-23 05:32:39

它应该实现:(

 Iterable<Item>

注意参数)

It should implement:

 Iterable<Item>

(note the parameter)

野の 2024-11-23 05:32:39

尝试如下操作:

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

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

Try something like:

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

as your Catalog class is not iterable, but it's itemList List is.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文