在许多情况下, Lambda 表达式的存在只是为了传递一个或多个形参。
在函数式编程中,常常传递 Lambda 表达式作为匿名函数,使用 Lambda 作为更高阶函数的实参。
普通函数(方法)通常有四个元素:
- 一个名称
- 返回类型
- 参数列表
- 主体 Lambda 表达式的构成:
(parameters) -> body
这里的->
将参数列表和函数主体分离。函数的主体可能是一个表达式或一个语句。
i -> i*2
1
在上面这个 Lambda 表达式中只有一行。信噪比很高,没有分号,也不需要 return
关键字。这是一个理想的 Lambda 表达式。
当然,有很多时候,我们的函数主体可能需要包含多行表达式或语句。在这种情况下,分号必不可少,也会需要 return
关键字,因为主体包含多行,括号 {}
也是必须的。同时如果参数列表为多个或没有参数时括号 ()
也是必须的。
(i, j) -> {
int square = i*i;
int number = square/2 + j;
return square + number;
}
1
2
3
4
5
2
3
4
5
需要注意的是:这里的参数列表中的 i
, j
并没有给定参数类型,这是因为在 Java 8 中支持了类型推断。当然我们也可以给定参数类表中的数据类型: (int i, int j) -> {...}