java - 在 Java 中使用嵌套类实现 Iterable

标签 java generics iterator

这是我的代码:

import java.util.List;

public class ItemList implements Iterable<Entry> {
    private List<Entry> entries;

    public static class Entry {
        private final String id;
        private int quantity;
    }

    @Overide public Iterator<Entry> iterator() {
        return entries.iterator();
    }
}

这段代码不会编译。 (它声称在 ItemList 类定义中找不到“Entry”类型)。

我希望其他类能够迭代此列表的内部条目。我宁愿不将 Entry 类移动到一个单独的文件中,因为这需要将该类的许多内部工作暴露给包中的所有其他类。

我的问题是:为什么不能编译?而且,解决这个问题的最佳方法是什么?

最佳答案

问题在于范围界定。由于 Entry 是一个内部类,它需要以“父级”的名称作为前缀。试试这个:

class ItemList implements Iterable<ItemList.Entry> {

    private List<Entry> entries;

    public static class Entry {
        private final String id = null;
        private int quantity;     
    }

    @Override public Iterator<Entry> iterator() {
        return entries.iterator();
    }
}

关于java - 在 Java 中使用嵌套类实现 Iterable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11399346/

相关文章:

java - 加载图像时输入== null

java - 需要矩阵搜索算法

java - Jetty 服务器上的 Log4j2 和 Flume

c# - 在泛型函数中使用基于 typeof 的特定类型

创建输出存储而不是应用于现有存储的 C++ 算法?

c++ - C++底层工作中的迭代器

iterator - 解决扩展特征的局限性

java - 根据短语的单词进行搜索,就像相关问题一样

c# - 结果对象而不是输出参数

Swift:使用泛型使函数通用?