<分区>
Possible Duplicate:
Why is Java's Iterator not an Iterable?
我们都知道java的扩展for
循环:
List<X> list = ...
for(X x : list) { ... }
我需要的是:
Iterator<X> listIterator = ...
for(X x : listIterator){ ... }
Java 不允许这样做。 我想知道规范不支持这个是否有充分的理由。
这是我的用例:
我正在为一种文件格式编写阅读器。这样的文件包含要读取的条目。为了这个例子,假设我正在尝试重新发明 BufferedReader 并且我的元素是字符串。
我对原始的 API 风格很不满意 BufferedReader
这迫使我编写丑陋的代码,例如:
for(String line = reader.readLine(); line != null; line = reader.readLine(){
...
}
我宁愿有一些像这样的好东西
for(String line : reader){
...
}
我当然可以制作我的 BufferedReader
实现 Iterable<String>
.但这意味着有一个 iterator()
可能被多次调用的方法。因为我不能在文件中查找,所以我不能真正支持多个并行迭代器。
有我的 BufferedReader
实现 Iterator<String>
而不是 Iterable<String>
似乎更合理。但是我不能使用 for
声明:-(