我可能漏掉了什么。
在Java 5中,引入了"for-each loop"语句(也称增强型for循环)。看起来它主要是用于遍历Collections。任何实现
在Java 8中,
在Java 5中,引入了"for-each loop"语句(也称增强型for循环)。看起来它主要是用于遍历Collections。任何实现
Iterable
接口的集合类(或容器)都可以使用“for-each loop”进行迭代。也许由于历史原因,Java数组没有实现Iterable
接口。但由于数组是/仍然是无处不在的,javac
会接受对数组使用for-each循环(生成等效于传统for循环的字节码)。在Java 8中,
forEach
方法作为一个默认方法被添加到Iterable接口中。这使得将lambda表达式传递到集合(在迭代时)成为可能(例如:list.forEach(System.out::println))。但是,数组不享受此待遇。 (我知道有解决方法)。
是否存在技术原因导致javac不能增强以接受数组中的forEach,就像它接受增强for循环中的数组一样?看起来可以生成代码,而无需要求数组实现Iterable。我是不是过于天真?
这对于初学者特别重要,因为他们自然会使用数组,因为它们具有语法上的便利性。切换到列表并使用Arrays.asList(1, 2, 3)并不自然。
asList(myArray)
是一个非常简单的解决方法。 - Mick MnemonictoString()
。 - BohemianArrays.stream(a).forEach(...);
。我不知道为什么这个问题被关闭了,可能有很好的答案。 - pp_