我有些困惑,想澄清我的概念。
假设我们有以下声明:
.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/