说明
Method Reference,即方法引用,是Java8为Lambda提供的简写语法。
方法引用是与Lambda 表达式等价的一种结构,只是更为简约。
举几个方法引用的例子:
1 |
|
分类
总体来说,方法引用总结分为4类:
引用静态方法
语法:ContainingClass::staticMethodName
例子: String::valueOf
对应的Lambda:(s) -> String.valueOf(s)
说明:与静态方法调用相比,只是把.换为::
引用特定对象的实例方法
语法:containingObject::instanceMethodName
例子: x::toString
对应的Lambda:() -> this.toString()
说明:与引用静态方法相比,都换为实例的而已
引用特定类型的任意对象的实例方法
语法:ContainingType::methodName
例子: String::toString
对应的Lambda:(s) -> s.toString()
说明:实例方法要通过对象来调用,方法引用对应Lambda,Lambda的第一个参数会成为调用实例方法的对象
引用构造函数
语法:ClassName::new
例子: String::new
对应的Lambda:() -> new String()
说明:构造函数本质上是静态方法,只是方法名字比较特殊
代码示例
静态方法引用的代码示例
1 | Integer[] arr1 = { 1, 3, 5, 0, 7, 1 }; |
执行结果如下:
1 | 0,1,1,3,5,7, |