实现 Iterable 与实现 Iterator
Implementing Iterable vs implementing Iterator
我有一个对象,我想在其中实现自定义迭代,但是:
- 我不想一次创建所有下一个模式。
- 我希望它在增强的 for 循环中工作,但我不想为所有实际迭代创建辅助
Iterator
对象,因为迭代需要访问私有字段。
- 我想要求创建第二个对象而不是创建第二个迭代器。
所以我的解决方案是同时实现 Iterator
和 Iterable
,并在我的实现中包含以下方法:
@Override
public java.util.Iterator iterator() {
return this;
}
这样的做法好吗?如果不是,我应该怎么做才能正确解决这个问题?
这种做法不好。创建一个辅助 Iterator
对象,并使 Iterator
成为 嵌套 class 在您当前的 class 中,这将允许它访问私人领域。
一般来说,尝试让您的对象同时成为 Iterable
和 Iterator
极有可能使用户感到困惑并破坏对 Iterable
如何假设的代码有效,特别是它可以多次使用。
我有一个对象,我想在其中实现自定义迭代,但是:
- 我不想一次创建所有下一个模式。
- 我希望它在增强的 for 循环中工作,但我不想为所有实际迭代创建辅助
Iterator
对象,因为迭代需要访问私有字段。 - 我想要求创建第二个对象而不是创建第二个迭代器。
所以我的解决方案是同时实现 Iterator
和 Iterable
,并在我的实现中包含以下方法:
@Override
public java.util.Iterator iterator() {
return this;
}
这样的做法好吗?如果不是,我应该怎么做才能正确解决这个问题?
这种做法不好。创建一个辅助 Iterator
对象,并使 Iterator
成为 嵌套 class 在您当前的 class 中,这将允许它访问私人领域。
一般来说,尝试让您的对象同时成为 Iterable
和 Iterator
极有可能使用户感到困惑并破坏对 Iterable
如何假设的代码有效,特别是它可以多次使用。