语法进一步精简规则
在原本的语法基础上,Lambda表达式已经相对来说比较精简了,但在以下的应用场景中,我们就可以对Lambda表达式的语法进行精简,场景如下:
- 形参类型可以省略,如果需要省略,则每个形参的类型都要省略。
- 如果形参列表中只存在一个形参,那么形参类型和小括号都可以省略。
- 如果方法体当中只有一行语句,那么方法体的大括号也可以省略。
- 如果方法体中只有一条return语句,那么大括号可以省略,且必须去掉return关键字。
基本使用
结合更为精简的语法规则对Lambda表达式进行运用
无返回值函数式接口
情况一:无返回值无参数
1 2 3 4 5 6 7 8 9
| NoParameterNoReturn obj1 = new NoParameterNoReturn() { @Override public void test() { System.out.println("无参无返回值"); } }; obj1.test(); NoParameterNoReturn obj2 = () -> System.out.println("无参无返回值"); obj2.test();
|
情况二:无返回值一个参数
1 2 3 4 5 6 7 8 9
| OneParameterNoReturn obj21 = new OneParameterNoReturn() { @Override public void test(int num) { System.out.println("无返回值一个参数 --> " + num); } }; obj21.test(10); OneParameterNoReturn obj22 = num -> System.out.println("无返回值一个参数 --> " + num); obj22.test(10);
|
情况三:无返回值多个参数
1 2 3 4 5 6 7 8 9
| MoreParameterNoReturn obj31 = new MoreParameterNoReturn() { @Override public void test(String str1, String str2) { System.out.println(str1 + " : " + str2); } }; obj31.test("hello", "world"); MoreParameterNoReturn obj32 = (str1, str2) -> System.out.println(str1 + " : " + str2); obj32.test("hello", "world");
|
有返回值函数接口
情况一:有返回值无参数
1 2 3 4 5 6 7
| NoParameterHasReturn obj41 = new NoParameterHasReturn() { @Override public int test() { return 520; } }; NoParameterHasReturn obj42 = () -> 520;
|
情况二:有返回值一个参数
1 2 3 4 5 6 7 8 9
| OneParameterHasReturn obj51 = new OneParameterHasReturn() { @Override public String test(double num) { return "传入的小数为:" + num; } }; System.out.println(obj51.test(520.0)); OneParameterHasReturn obj52 = num -> "传入的小数为:" + num; System.out.println(obj52.test(520.0));
|
情况三:有返回值多个参数
1 2 3 4 5 6 7 8 9
| MoreParameterHasReturn obj61 = new MoreParameterHasReturn() { @Override public String test(int num1, int num2) { return "运算的结果为:" + (num1 + num2); } }; System.out.println(obj61.test(10, 20)); MoreParameterHasReturn obj62 = (num1, num2) -> "运算的结果为:" + (num1 + num2); System.out.println(obj62.test(10, 20));
|