..........
好吧,让我告诉你我犯了一些错误:我所指的foreach()不是聚合操作,而是来自Iteable的方法。我更改了问题的标题及其内容。
我的兴趣是知道默认情况下是否实现了聚合操作以及在哪里可以找到该实现。
深入研究JDK源代码,你可以按照@jbkm的建议随时在这里下载它们。如果您安装了Oracle JDK,则安装文件夹中应该src.zip
包含所有公共源代码的文件。或者,您可以在线查看OpenJDK源代码,例如在GrepCode上。如您所见,Iterable
的forEach
实现非常简单:
default void forEach(Consumer<? super T> action) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
如果你询问的是流 API 中forEach
的实现,那就更棘手了,因为它应该评估所有前面的管道步骤,并为并行流并行执行操作。您可以开始调查ReferencePipeline
类,这是 OpenJDK 中Stream
实现。