java-8 - Java 8 中的终端操作 sum() 在哪里实现?
问题描述
我明白了,它是在 Interface 中定义的IntStream
,但是当您编写IntStream.range(0, 200).sum();
如何调用实现时?它在哪里?没找到。。
解决方案
对于每个接口,它都在实现该接口的具体类中定义。
在这种情况下,它是 in java.util.stream.IntPipeline
,它不是一个公共类。但你不应该关心这个。您需要知道的是 IntStream 具有该方法,该方法执行该方法的 javadoc 所做的事情。
如果您真的对它的实现感到好奇,请查看以下源代码IntPipeline.java
:
return reduce(0, Integer::sum);
请注意我是如何非常容易地发现的:我只是IntStream
在我的 IDE 中打开类型层次结构(IntelliJ,但所有体面的 IDE 都具有该功能),并注意到它有一个直接实现:IntPipeline
,它确实包含该方法。
推荐阅读
- javascript - 如何在纯 html/javascript 中使用 URL 文件路径作为参数?
- marklogic - MarkLogic 中的“范围”范围查询?
- postgresql - 使用来自查询结果的 JSON 有效负载通知
- azure - 在 Azure 上构建多实例(专用环境)和多租户应用程序
- nginx - 使用 nginx、gunicorn 和 supervisor 配置 flask-socketio
- java - KafkaTemplate Producer 错误使用 Intellij 进行不需要的红色突出显示
- antlr4 - 为什么结束括号在我的 antlr4 语法中不被识别为有效?
- php - 启用 CloudFlare 时无法从 curl 获取请求中检索授权令牌
- node.js - Firebase 存储 - 从 Cloud Function 上传会导致文件无法访问
- reactjs - React-map-gl 不适合父级