Lambda表达式是否支持多行语句?代码举例讲解

Lambda 表达式支持多行语句。我们可以通过以下两种方式在 Lambda 表达式中使用多行语句:

  1. 使用花括号 {} 包裹多行语句
    例如:
Consumer<Integer> consumer = (x) -> { 
    System.out.println(x);
    doSomething(x);
    x++; 
};

这里使用 {} 将三行语句包裹起来,所以 Lambda 表达式支持多行语句。

  1. 使用 return 语句
    例如:
Function<Integer, Integer> function = (x) -> {  
    int result = x * 2;
    return result; 
};

这里使用 return 语句将多行语句中的结果返回,所以也支持多行语句。

需要注意的是:

  • 如果 Lambda 表达式有且只有一条语句,那么可以选择省略花括号 {}。
  • 如果 Lambda 表达式只有一条 return 语句,那么可以选择省略花括号 {}。
  • 如果两个条件同时满足,那么可以同时省略花括号 {} 和 return 关键字。

例如:

Consumer<Integer> c1 = (x) ->  System.out.println(x);  
Function<Integer, Integer> f1 = (x) ->  x * 2;  

等价于:

Consumer<Integer> c2 = (x) -> { System.out.println(x); };
Function<Integer, Integer> f2 = (x) -> { return x * 2; };