为什么Java8选择了双冒号操作符?
在Java8之前,我的观察是引用成员方法的事实标准是使用为什么Java8选择了双冒号操作符?,java,syntax,operators,java-8,Java,Syntax,Operators,Java 8,在Java8之前,我的观察是引用成员方法的事实标准是使用符号(例如对象#toString())。后来出现了Java8,它为方法引用选择了:操作符,似乎没有任何理由 是否有官方解释或理由说明为什么选择了:?您可以从中找到答案。您应该阅读完整的讨论,但这是一个摘录: ::中缀语法: ClassName::methodName ClassName<T>::methodName ClassName::<U>genericMethodName ClassN
符号(例如对象#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@冈塔:谢谢,那正是我想要的。如果这个问题被重新打开,请随意将其作为答案发布(附上摘录或遵循“无链接”指南的内容),我很乐意接受。