Lambda表达式
概念
Lambda 表达式,也可称为闭包,其本质是一个Java语法糖,可以使匿名方法的代码变的更加简洁紧凑。同时,Lambda 允许把函数作为参数传递进方法中,推动了 Java 中的函数化编程。
语法
// 如果主体包含了一条语句,就不需要使用大括号;主体会将表达式的值作为返回值
() -> exp;
// 不需要声明参数类型
// 一个参数无需定义圆括号
p1 -> exp;
// 多个参数必须要定义圆括号
// 主体包含了多条语句,必须要使用大括号;大括号内需要显式指定返回值
(p1, p2) -> {
exp1;
exp2;
return "xxx";
}
// lambda 表达式只能引用不被修改的外层局部变量,否则会编译错误
int a = 0; // 编译器会自动将该变量视为常量,不可修改。
myFun( () -> a + 2 );
函数式接口
- 函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法(静态方法或者默认方法)的接口。
- 函数式接口使用
@Functi