Java8 - Lambda表达式的5种形式


本文介绍Jave8中Lambda表达式的多种写法形式,一般有五种写法形式。

形式一:

这种写法没有参数,用一对圆括号表示。

1
Runnable noArguments = () -> System.out.println("Hello World");

形式二:

这种写法只有1个参数,可以省略括号,下面的 event 相当于 (event)

1
2
3
ActionListener oneArgument = event -> System.out.println("点击了按钮");
// 等同于 ↓
//ActionListener oneArgument = (event) -> System.out.println("点击了按钮");

形式三:

这种写法表示有多段代码块,适用于复杂状况。

1
2
3
4
Runnable multiStatement = () -> {
System.out.print("Hello");
System.out.println(" World");
};

形式四:

这种写法表示包含两个参数的方法。
注意:下面的 functionAdd 并不是将两个数字相加的结果,而是创建了一个函数,用来计算两个数字相加的结果。变量 functionAdd 的类型并不是两个数字相加的和,而是将两个数字相加的那行代码。

1
2
3
4
// 创建一个函数
BinaryOperator<Long> functionAdd = (x, y) -> x + y;
// 应用函数,给函数传值,得到计算结果
Long result = functionAdd.apply(1L, 2L);

形式五:

这种写法和形式四的不同之处在于,多了对参数类型的显示声明。

1
2
3
4
// 创建一个函数
BinaryOperator<Long> function = (Long x, Long y) -> x + y;
// 应用函数,给函数传值,得到计算结果
Long result = function.apply(1L, 2L);