欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java8新特性整理之方法引用(二)

程序员文章站 2022-05-22 22:00:52
...

方法引用语法

目标引用 ::方法的名称

例子

截取字符串的Lambda表达式

(str, i) -> str.substring(i) 

等效的方法引用

String::substring

方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它们.

构建方法引用

方法引用主要有三类:
- 指向静态方法的方法引用(例如Integer的parseInt方法,写作Integer::parseInt)。
- 指向任意类型实例方法的方法引用(例如 String 的 length 方法,写作
String::length)。
- 指向现有对象的实例方法的方法引用(假设你有一个局部变量expensiveTransaction
用于存放Transaction类型的对象,它支持实例方法getValue,那么你就可以写expensive-
Transaction::getValue)。

Java8新特性整理之方法引用(二)
图片来自《Java 8 In Action》

上图为三种不同类型的Lambda表达式构建方法引用的办法。

你可以把方法引用看作针对仅仅涉及单一方法的Lambda的语法糖。

总结下:
- 跟Lambda表达式比起来,方法引用的可读性更好 。
- 尽量将复杂的Lambda表达式抽象到普通方法中,然后作为行为参数传递(方法引用)。

相关标签: 方法引用