在Java 8之前,我的观察是引用成员方法的事实标准是使用#
符号(例如Object#toString()
)。然后是Java 8,它选择::
运算符作为方法引用,似乎没有理由。
是否有正式的解释或理由说明为什么选择了::
?
答案 0 :(得分:5)
您可以从"official explanation or justification"找到Brian Goetz。您应该阅读完整的讨论,但这是一个摘录:
:: infix语法:
ClassName::methodName ClassName<T>::methodName ClassName::<U>genericMethodName
工作得很好。有些人喜欢它,有些人讨厌它 - 就像 #。对于任何事情来说,永远不会是一个完美的语法 这让每个人齐声跳起来说'#34;是的,那就是它!&#34;但是:: 没问题,使用up :: here比使用#更好。 (而且,同时 对于C ++程序员来说,这可能看起来有些奇怪 Java和C ++开发人员基础在这一点上足够小,我 不要以为我们应该过于担心。)