关于对java中的Lamba表达式的理解
1 Lamba表达式出现的罪魁祸首是函数式接口
啥叫函数式接口, 就是, 一个接口, 内部有且只有一个抽象方法, md, 只有一个待实现的方法还要造成一个接口, 有亿点点多余
为了简化这种接口的实现, 所以出现了Lamba表达式
2 如果说Lamba表达式的出现是为了简化函数式接口的实现(只是体现在少写代码上)
那么, 函数引用的出现就是为了简化Lamba表达式的书写
为啥:
函数引用的出现场景:
如果Lamba表达式实现的方法中,
(1) 只有一条执行语句,
(2) 并且这条执行语句是一个对象当中的方法(或者类中的静态方法)
(3) 此方法的参数和返回值与Lamba表达式的参数和返回值相同
那么, 我们就可以使用这个方法, 直接作为整个Lamba表达式
3 使用Lamba表达式的注意事项
(1) 如果方法的实现体中只有一条执行语句, 但是没有返回值, 那么大括号{...}不能省略
(2) 对于函数引用的第三种情况的理解:
类名 : : 实例方法名,
虽然说对这个东西可以知道怎么用, 但是实在是不知道怎么理解
自己想了一种理解方式:
如果Lamba表达式中只有一条执行语句, 并且Lambda表达式的第一个参数是这个方法的调用者, 其它的参数是这个方法的参数
那么, 我们就可以使用 类名 : : 实例方法名 的形式来写Lamba表达式,
怎么说呢, 形式上就是, Lambada表达式的原生写法的第一个参数是函数体中执行的函数方法的调用者, 其它参数是执行的函数方法中的参数