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

方法引用语法

目标引用 ::方法的名称

例子

截取字符串的Lambda表达式

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

等效的方法引用

String::substring

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

构建方法引用

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值