我有一个对象想要实现自定义迭代,但是:
Iterator
对象,因为迭代需要访问私有字段。所以我的解决方案是同时实现Iterator
和Iterable
,并在实现中包括以下方法:
@Override
public java.util.Iterator iterator() {
return this;
}
这可以吗?如果不是,该怎么办才能正确解决此问题?
答案 0 :(得分:2)
这不是好的做法。创建一个辅助Iterator
对象,并将该Iterator
设为当前类内的嵌套类,这将允许它访问私有字段。
通常,尝试同时将您的对象设为Iterable
和Iterator
极有可能使用户感到困惑,并破坏对Iterable
的工作方式进行假设的代码,特别是它可以多次使用。