这是我的代码:
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/