实现Iterable与实现Iterator

时间:2019-09-24 00:42:26

标签: java iterator iterable

我有一个对象想要实现自定义迭代,但是:

  • 我不想立即创建所有下一个模式。
  • 我希望它在增强的for循环中工作,但是我不想为所有实际迭代创建次要Iterator对象,因为迭代需要访问私有字段。
  • 我要创建第二个对象,而不是第二个迭代器。

所以我的解决方案是同时实现IteratorIterable,并在实现中包括以下方法:

@Override
public java.util.Iterator iterator() {
    return this;
}

这可以吗?如果不是,该怎么办才能正确解决此问题?

1 个答案:

答案 0 :(得分:2)

这不是好的做法。创建一个辅助Iterator对象,并将该Iterator设为当前类内的嵌套类,这将允许它访问私有字段。

通常,尝试同时将您的对象设为IterableIterator极有可能使用户感到困惑,并破坏对Iterable的工作方式进行假设的代码,特别是它可以多次使用。