为什么选择Java 8的双冒号运算符?

时间:2015-03-06 09:31:50

标签: java syntax operators java-8

在Java 8之前,我的观察是引用成员方法的事实标准是使用#符号(例如Object#toString())。然后是Java 8,它选择::运算符作为方法引用,似乎没有理由。

是否有正式的解释或理由说明为什么选择了::

1 个答案:

答案 0 :(得分:5)

您可以从"official explanation or justification"找到Brian Goetz。您应该阅读完整的讨论,但这是一个摘录:

  

:: infix语法:

   ClassName::methodName 
   ClassName<T>::methodName 
   ClassName::<U>genericMethodName 
     

工作得很好。有些人喜欢它,有些人讨厌它 -   就像 #。对于任何事情来说,永远不会是一个完美的语法   这让每个人齐声跳起来说'#34;是的,那就是它!&#34;但是::   没问题,使用up :: here比使用#更好。 (而且,同时   对于C ++程序员来说,这可能看起来有些奇怪   Java和C ++开发人员基础在这一点上足够小,我   不要以为我们应该过于担心。)