我看到它是在接口IntStream
中定义的,但是当您编写IntStream.range(0, 200).sum();
时,如何调用实现?它在哪里?找不到..
答案 0 :(得分:3)
对于每个接口,它都是在实现该接口的具体类中定义的。
在这种情况下,它位于java.util.stream.IntPipeline
中,这不是公共类。但是您不应该在意这一点。您需要知道的是IntStream具有该方法,该方法执行该方法的javadoc。
如果您真的对它的实现感到好奇,请查看IntPipeline.java
的源代码:
return reduce(0, Integer::sum);
关于如何极其轻松地发现的注意事项:我只是在IDE中打开IntStream
的类型层次结构(IntelliJ,但是所有不错的IDE都具有该功能),并注意到它只有一个直接实现: {1}},其中确实包含该方法。
答案 1 :(得分:1)
如果您使用的是合格的编译器,那么可以选择一个选项来显示其实现。例如,当我想查看IntelliJ的实现时,单击转到实现。然后,它重定向。
在IntPipeLine.java
中,
@Override
public final int sum() {
return reduce(0, Integer::sum);
}
答案 2 :(得分:0)