Java8新特性整理之方法引用

Java8新特性整理之方法引用

方法引用语法

目标引用 ::方法的名称
  • 1

例子

截取字符串的Lambda表达式

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

等效的方法引用

String::substring
  • 1

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

构建方法引用

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

Lambda表达式构建方法引用的办法
图片来自《Java 8 In Action》

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

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

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

猜你喜欢

转载自blog.csdn.net/m0_37542889/article/details/83090802