为什么我们必须使用双冒号进行方法引用?

7 java colon java-8

例如,为什么我可以写行

Character[] c = Arrays.sort(list.toArray(new Character[list.size()]))
Run Code Online (Sandbox Code Playgroud)

但是在我阅读有关方法引用的文档时,它们会告诉我使用它::吗?它不和.运营商一样吗?

我不知道上面的代码是否编译,因为我在我的手机上输入了这个.把它看作一个松散的例子.

Sin*_*int 11

双冒号运算符是Java8中提供的新运算符.语法糖告诉编译器基于将调用该方法的上下文生成lambda.这使得一些lambda表达式更容易一些.在Java8之前,此运算符不存在,不,它与点(.)运算符不同.例如:

Math.max(4, 6) // Calls Math.max with the arguments 4 and 6
Math::max // A reference to the max method in the java.lang.Math class
Run Code Online (Sandbox Code Playgroud)

稍微阅读一些内容(尽管这些内容全部都是Beta版,尚未正式发布)请尝试http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html