Lambda表达式的含义:当我们需要将某一个函数(或者说操作、功能、方法)作为参数传递到某个方法中时,我们可以用Lambda表达式来表达。或者说可以通过lambda表达式,把代码看成数据去传递:
如: Arrays.asList("a","b","c","d").forEach(e -> System.out.println(e));
请注意参数e的类型是由编译器推测出来的。同时,你也可以通过把参数类型与参数包括在括号中的形式直接给出参数的类型:
1 |
|
在某些情况下lambda的函数体会更加复杂,这时可以把函数体放到在一对花括号中,就像在Java中定义普通函数一样。例如:
1 2 3 4 |
|
Lambda可以引用类的成员变量与局部变量(如果这些变量不是final的话,它们会被隐含的转为final,这样效率更高)。例如,下面两个代码片段是等价的:
1 2 3 |
|
和:
1 2 3 |
|
Lambda可能会返回一个值。返回值的类型也是由编译器推测出来的。如果lambda的函数体只有一行的话,那么没有必要显式使用return语句。下面两个代码片段是等价的:
1 |
|
和:
1 2 3 4 |
|
函数式接口就是一个具有一个方法的普通接口。像这样的接口,可以被隐式转换为lambda表达式。