一直搞不明白双冒号运算要怎么使用,今天在《Java8实战》中看到相关内容,讲解的比较详细,参考这篇文章,总结一下,希望能帮助大家,如果有兴趣,也可以直接看《Java8实战》这本书
双冒号运算就是Java中的方法引用,他是一种更简洁的lambda表达式,一些情况下,比lambda表达式更易读,更自然。
注意,方法引用不需要括号
构建方法:
- 静态方法
Lambda:(args) -> ClassName.staticMethod(args) 方法引用(::):ClassName::staticMethod
- lambda表达式参数的实例
Lambda:(arg, rest) -> arg.instanceMethod(rest) //ClassName是arg所属的类 方法引用(::):ClassName::instanceMethod
- 外部变量的实例方法
Lambda:(args) -> expr.instanceMethod(args) 方法引用(::):expr::instanceMethod
从以上来看,出现在Lambda表达式中的参数在使用方法引用时,参数都是被省略掉的(第1、2种情况是用其所属类代替了)。
例如:
package com.xiuyong.zhi.test