Lambda表达式
何为lambda表达式
In programming languages such as Lisp,Python and
Ruby lambda is an operator used to denote anonymous functions
or closures,following the usage of lambda calculus.
在编程语言,lambda 是一种运算符 用于指定匿名函数或闭包,跟随lambda算子的使用。
为何需要Lambda表达式
在Java中,我们无法将函数作为参数传递给一个方法,也无法声明返回一个函数的方法。
在JavaScript中,函数参数是一个函数,返回值是另外一个函数的情况是非常常见的;JavaScript是一个非常典型的函数式语言。
探索一下lambda表达式是什么?
在Java中就是对象,依附于特别的对象类型,函数式接口(functional interface)
什么是函数式接口
所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。
这种类型的接口也称为SAM接口,即Single Abstract Method interfaces
特点
接口有且仅有一个抽象方法
允许定义静态方法
允许定义默认方法
允许java.lang.Object中的public方法
该注解不是必须的,如果一个接口符合"函数式接口"定义,那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口,但是加上了@FunctionInterface,那么编译器会报错
函数式接口的使用方式
lambda表达式,方法引用,构造器引用。
什么是方法引用?
lambda表达式的使用
lambda运算符 " => ",可以叫他,“转到”或者 “成为”,运算符将表达式分为两部分,左边指定输入参数,右边是lambda的主体。
lambda表达式:
1.一个参数:param=>expr
2.多个参数:(param-list)=> expr
lambda表达式左边不传参数,(),不能省略,一个参数可以不写(),多个参数要加括号,多数情况下,可以省略掉参数类型不写,lambda表达式可以通过上下文推断出来。
lambda表达式右边函数主体,只有一行代码,可以省略{}和return,多行代码需要加{}和return。
lambda表达式好处
传递行为而不是值
提升抽象层次
API重用性好
更加灵活