Java 8 中的终端操作 IntStream.sum() 在哪里实现?

问题描述 投票:0回答:2

我看到方法

sum
是在接口
IntStream
中定义的。 当你写
IntStream.range(0, 200).sum()
时,实现是如何调用的?它在哪里?我没找到。

java java-8 java-stream
2个回答
5
投票

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

在本例中,它位于

java.util.stream.IntPipeline
,这不是公共课程。但你不应该关心这个。您需要知道的是 IntStream 有该方法,该方法执行该方法的 javadoc 的操作。

如果你真的对它的实现感到好奇,请查看

IntPipeline.java
的源代码:

return reduce(0, Integer::sum);

注意我是如何非常轻松地发现的:我只需在 IDE 中打开

IntStream
的类型层次结构(IntelliJ,但所有像样的 IDE 都具有该功能),并注意到它有一个直接实现:
IntPipeline
,其中确实包含该方法。


1
投票

如果您使用合格的编译器,则可以选择显示其实现。例如,当我想查看 IntelliJ 的实现时,我单击转到实现。然后,它会重定向。

IntPipeLine.java

@Override
    public final int sum() {
        return reduce(0, Integer::sum);
    }
© www.soinside.com 2019 - 2024. All rights reserved.