【发布时间】:2012-07-09 16:33:29
【问题描述】:
这是我的代码:
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 类移到单独的文件中,因为这需要将该类的许多内部工作暴露给包中的所有其他类。
我的问题是:为什么不能编译?而且,解决这个问题的最佳方法是什么?
【问题讨论】:
-
如何使用
ItemList? -
尝试将
Entry类设为静态。 -
这个结构在直觉上是没有意义的。您正在实现私有类型的
Iterable。外部课程如何在不知道Entry的情况下使用您的ItemList? -
现在,我使用 c# 而不是 java,但在我看来
ItemList不能真正实现Iterable<Entry>,只要Entry是私有的。只是没有意义。 -
@SamIam ItemList 只是列表的包装器。基本上,我想阻止其他类使用某些 List 功能。