【发布时间】:2020-01-24 01:40:42
【问题描述】:
我有一个我想在其中实现自定义迭代的对象,但是:
- 我不想一次创建所有的下一个模式。
- 我希望它在增强的 for 循环中工作,但我不想为所有实际迭代创建辅助
Iterator对象,因为迭代需要访问私有字段。 - 我想要求创建第二个对象,而不是创建第二个迭代器。
所以我的解决方案是同时实现Iterator 和Iterable,并在我的实现中包含以下方法:
@Override
public java.util.Iterator iterator() {
return this;
}
这样可以吗?如果不是,我应该怎么做才能正确解决这个问题?
【问题讨论】:
-
一个
Iterator封装了一些状态,尤其是hasNext()和next()调用。如果有人想循环你的对象两次会发生什么? -
以我的意图,我想要求他们制作一个新对象再次迭代。
-
你知道成员类(包括内部类)可以访问包含类的私有字段吗?您可以创建一个实现迭代器的内部类;您不需要为此公开您的私有字段。