Lambda表达式
语法:
{参数}->{表达式或者函数体}
例子:
//无参数,无返回值
() -> {System.out.println("Hello World");}
//有参数,有返回值
x -> 5 * x
//多个参数,有返回值
(integer a, integer b) -> (compare.(a, b))
当body部分只有一条语句时,不需要写return,也可以不写大括号,当参数部分只有一个参数时,也可以不写括号
参数部分也不需要写参数类型,编译器会自动识别
在函数式接口可以直接使用Lambda表带是来创建对象
函数式接口:只包含一个抽象方法的接口
如果需要将Lambda表达式作为参数传递,接受Lambda表达式的参数类型必须和该Lambda表达式的函数式接口兼容!
Lambda表达式有什么用呢?
简便了代码,相当于语法糖
原本我们这么写
new Thread(new Runnable() {
public void run() {
System.out.println("hello");
}
}).start();
使用Lambda表达式
new Thread(() -> {System.out.println("hello World");}).start();