Java - 使用::时函数是否在内部接收参数?

标签 java java-8

我有些困惑,想澄清我的概念。

假设我们有以下声明:

.map(i -> Tests.doubleIt(i))

因此,当使用 :: 时:

.map(测试::doubleIt)

那么,i 参数是否由 doubleIt 内部接收并在内部传递给 doubleIt 方法?

我们能否知道在 :: 情况下如何接收 i 并将其传递给 doubleIt 方法的内部原理?

最佳答案

map 中的代码调用您传递给它的函数 (doubleIt),直接向其传递参数,doubleIt 接收该参数作为其第一个形式范围。相反,对于您的 lambda 版本,map 使用参数调用您的 lambda,您的 lambda 接收该参数作为其 i 参数,然后您的 lambda 调用 doubleIt 使用 i 作为参数。因此(理论上)使用方法引用比使用 lambda 更直接。

关于Java - 使用::时函数是否在内部接收参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53903179/

相关文章:

java - 比较 Java 中 Postgresql 中的时间戳日期

java - 原始类型问题的扩大和缩小

java - 尝试写入文件时出现 NullPointerException

java - 将 List<Object[]> 数组转换为 Map

java - 如果我无法更改父类,那么公共(public)属性和方法实现应该放在哪里?

Java 8 : Comparator comparingDouble type mismatch

Java List<String> 到 Map<String, Long> 转换

java - 官方教程代码在Eclipse中出现红色波浪线不允许我编译

java - 过滤图像的最快性能

Java 8 如何处理属性为 null 的情况