Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Lambda匹配功能接口的签名,但;不“不”;。你怎么解释这个论点是通过的?_Java_Lambda_Java 8_Invokedynamic - Fatal编程技术网

Java Lambda匹配功能接口的签名,但;不“不”;。你怎么解释这个论点是通过的?

Java Lambda匹配功能接口的签名,但;不“不”;。你怎么解释这个论点是通过的?,java,lambda,java-8,invokedynamic,Java,Lambda,Java 8,Invokedynamic,我现在正在工作。它工作得出奇地好 然而,在再次阅读自述之后,我开始思考如何记录困扰我的东西 引用这个例子,暂时忘记可以抛出异常,它的内容如下: Files.list(somePath).map(Path::toRealPath).forEach(System.out::println) 嗯。现在,涉及到Path的方法。当然,我们不会传递任何LinkOption 再一次:让我们暂时忘记它会引发任何异常 流的.map()将函数作为参数。对于功能,此接口定义为: R apply(T t); 但是我

我现在正在工作。它工作得出奇地好

然而,在再次阅读自述之后,我开始思考如何记录困扰我的东西

引用这个例子,暂时忘记可以抛出异常,它的内容如下:

Files.list(somePath).map(Path::toRealPath).forEach(System.out::println)
嗯。现在,涉及到
Path
的方法。当然,我们不会传递任何
LinkOption

再一次:让我们暂时忘记它会引发任何异常

流的
.map()
函数
作为参数。对于
功能
,此接口定义为:

R apply(T t);
但是我使用的方法不接受任何参数。乍一看,它似乎与
函数不匹配,对吗?除了

它可以写成:

path -> path.toRealPath()
因此,如果方法引用没有参数或类似的参数,那么所使用的机制似乎能够在某种程度上调用“流对象”上的方法

我想相应地记录这一点,我在这里遗漏了一些东西


我缺少什么?

非静态方法将receiver(
this
)对象作为隐式的第一个参数。因此,
Class::nonStaticMethod
比您预期的多了一个参数

Java语言规范第15.13.1节:

  • 其次,给定具有n个参数的目标函数类型,确定了一组可能适用的方法:

    • 如果方法引用表达式的形式为ReferenceType
      [TypeArguments]标识符,则可能适用的方法是要搜索的类型的成员方法,这些方法具有适当的名称(由标识符给出)、可访问性、arity(n或n-1)和类型参数arity(从[TypeArguments]派生),如§15.12.2.1所述

      考虑了两种不同的算术,n和n-1,以说明这种形式可能指的是
      静态
      方法或实例方法


好吧,这就解释了一切!人力资源管理。。。我可以打扰你,请你编辑你的帖子,并附上一些相关链接作为圣诞礼物吗?;)不,你不能打扰我,但你可以打扰我,当然。:-)好的,那么,作为一个简要说明:在示例中,
ReferenceType
Path
;无障碍OK;名字不重要(对吧?);arity OK(1或0,此处为0);由于方法引用是一个实例方法,所以期望的arity为0,并且当它发生时,它返回
ReferenceType
。我在正确的轨道上吗?在本例中,名称检查是查找名为
toRealPath
的方法。例如,
Path::methodThatDoesNotExist
的方法引用将无效。这就清楚了!谢谢!为那次不幸的口误感到抱歉,祝你有一个流畅的年末;)