首页 > 解决方案 > Java 8 中的终端操作 sum() 在哪里实现?

问题描述

我明白了,它是在 Interface 中定义的IntStream,但是当您编写IntStream.range(0, 200).sum();如何调用实现时?它在哪里?没找到。。

标签: java-8streamjava-stream

解决方案


对于每个接口,它都在实现该接口的具体类中定义。

在这种情况下,它是 in java.util.stream.IntPipeline,它不是一个公共类。但你不应该关心这个。您需要知道的是 IntStream 具有该方法,该方法执行该方法的 javadoc 所做的事情。

如果您真的对它的实现感到好奇,请查看以下源代码IntPipeline.java

return reduce(0, Integer::sum);

请注意我是如何非常容易地发现的:我只是IntStream在我的 IDE 中打开类型层次结构(IntelliJ,但所有体面的 IDE 都具有该功能),并注意到它有一个直接实现:IntPipeline,它确实包含该方法。


推荐阅读