Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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
为什么Java8选择了双冒号操作符?_Java_Syntax_Operators_Java 8 - Fatal编程技术网

为什么Java8选择了双冒号操作符?

为什么Java8选择了双冒号操作符?,java,syntax,operators,java-8,Java,Syntax,Operators,Java 8,在Java8之前,我的观察是引用成员方法的事实标准是使用符号(例如对象#toString())。后来出现了Java8,它为方法引用选择了:操作符,似乎没有任何理由 是否有官方解释或理由说明为什么选择了:?您可以从中找到答案。您应该阅读完整的讨论,但这是一个摘录: ::中缀语法: ClassName::methodName ClassName<T>::methodName ClassName::<U>genericMethodName ClassN

在Java8之前,我的观察是引用成员方法的事实标准是使用
符号(例如
对象#toString()
)。后来出现了Java8,它为方法引用选择了
操作符,似乎没有任何理由

是否有官方解释或理由说明为什么选择了

您可以从中找到答案。您应该阅读完整的讨论,但这是一个摘录:

::中缀语法:

   ClassName::methodName 
   ClassName<T>::methodName 
   ClassName::<U>genericMethodName 
ClassName::methodName
ClassName::methodName
ClassName::genericMethodName
效果可以接受。有些人喜欢,有些人讨厌-- 就像#。任何东西都不会有完美的语法 这让每个人都异口同声地跳起来说“是的,就是这样!”但是: 没关系,使用up::here远比使用up#好。(以及 这可能看起来有点奇怪,C++程序员之间的重叠 java和C++开发者的基础在这点上足够小,我 不要认为我们应该对此太担心。)


在哪里使用了
#
来引用成员方法?Java没有“成员方法”这样的东西;函数在Java中不是一等公民。借用
::
只是为了方便地定义方法引用,左边是它的类或实例,右边是方法名。#从来不是引用方法的Java API标准语法的一部分。您可能需要复习以更好地理解::Nevermind@冈塔:谢谢,那正是我想要的。如果这个问题被重新打开,请随意将其作为答案发布(附上摘录或遵循“无链接”指南的内容),我很乐意接受。