Stephen Colebourne(Joda-
Time,JSR-310等)对优点和缺点进行了很好的总结,针对每个循环迭代控制建议进行了增强,以在Java 7中进行扩展:
功能概要:
扩展Java 5 for-each循环,以允许访问循环索引(无论是第一次还是最后一次迭代),并删除当前项。
主要优势
for-each循环几乎可以肯定是Java 5中最流行的功能。 它之所以起作用,是因为它提高了抽象级别-
无需表达如何循环遍历列表或数组的低级细节(使用索引或迭代器),开发人员只是简单地说他们想循环播放,其余部分由该语言负责。
但是,一旦开发人员需要访问索引或删除项目,所有的好处就会丢失。针对每项工作的原始Java
5在旨在解决80%案例的许多问题上采取了相对保守的立场。但是,循环是编码中的一种常见形式,因此剩余的20%未被解决的代码占了很大一部分。将循环从转换为基于索引或迭代器的过程是痛苦的。这是因为 旧的循环样式 如果明显较低, 则更加冗长而不清楚
。这也是很痛苦的,因为大多数IDE不支持这种“重构”。主要优点:
通用编码习惯用比目前更高的抽象性表示。这有助于 提高可读性和清晰度 。
…
综上所述,增强的for循环提供了简洁的高级语法来遍历列表或数组,从而提高了清晰度和可读性。但是,它缺少一些部分:允许访问索引循环或删除项目。
也可以看看
- Java 7-每个循环控制访问
- 斯蒂芬·科尔本(Stephen Colebourne)的原始文章



