一,lambda 表达式
1,语法
//单行
(parameters) -> expression
//多行
(parameters) ->{ statements; }
2,作用
1)lambda 允许把函数作为参数传递进方法中
2)使用 Lambda 表达式可以使代码变的更加简洁紧凑
声明一个接口
interface SayHello{
/**
* hello
* @param name
* @return
*/
String hello(String name);
}
使用 Lambda 表达式简洁的实现接口
public class Java8Test {
public static void main(String args[]){
SayHello hello = (name)->"hello! "+name;
SayHello hello2 = (String name)->{
System.out.println("do work");
return "hello! "+name;
};
System.out.println(hello.hello("老大"));
System.out.println(hello2.hello("老二"));
}
}
最常用的场景:简化new Runnable()的操作
ThreadPools.exe.execute(()->{
LogProvider provider = new LogProvider(_serviceName, _version, level, contents);
try {
api.writeLog(provider);
} catch (Exception ex) {
ex.printStackTrace();
}
});
3, 注意
a. Lambda 表达式只能引用标记了 final 的外层局部变量,这就是说不能在 lambda 内部修改定义在域外的局部变量,否则会编译错误。
b. 一个接口只有一个方法,如Runnable这种,用Lambda实现最合适,如果有多个方法会报错,没有深入研究。
c.如果你的IDE报错,就要设置一下支持lambda语法
Intel LDE 设置:
Ctrl + Alt + Shift + S
其他的自己搜索一下.