- Lambda是java8开始支持的一种语法格式,可以使用更少的代码实现更多功能。
- 其本质与java6等相比,只是语法改变,使用Lambad语法写成的java编译成class后与java6写成的java编译的class无本质区别。由此可见,减少了代码量的同时,也减少了可读性,增加了维护难度。
- 权威的文档可以参考此处
- 如果要在java6或者java7中使用Lambda,可以使用retrolambda
- 如果要在Android中使用Lambda,并且使用gradle构建,可以使用gradle-retrolambda
Lambda表达式的语法 基本语法: (parameters) -> expression 或 (parameters) ->{ statements; }
举个栗子 🔗
// 1. 不需要参数,返回值为 5
() -> 5
// 2. 接收一个参数(数字类型),返回其2倍的值
x -> 2 * x
// 3. 接受2个参数(数字),并返回他们的差值
(x, y) -> x – y
// 4. 接收2个int型整数,返回他们的和
(int x, int y) -> x + y
// 5. 接受一个 string 对象,并在控制台打印,不返回任何值(看起来像是返回void)
(String s) -> System.out.print(s)
匿名内部类的写法 🔗
// 1.1使用匿名内部类
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Hello world !");
}
}).start();
// 1.2使用 lambda expression
new Thread(() -> System.out.println("Hello world !")).start();
// 2.1使用匿名内部类
Runnable race1 = new Runnable() {
@Override
public void run() {
System.out.println("Hello world !");
}
};
// 2.2使用 lambda expression
Runnable race2 = () -> System.out.println("Hello world !");
// 直接调用 run 方法(没开新线程哦!)
race1.run();
race2.run();