Java 中的 Lambda 表达式和闭包有什么区别?

java 8object oriented programmingprogramming

Java 支持 lambda 表达式,但不支持闭包。lambda 表达式是一个匿名函数,可以定义为参数。闭包就像代码片段代码块,可以在不作为方法或类的情况下使用。这意味着闭包可以访问其参数列表中未定义的变量,也可以将其分配给变量。

语法

([逗号分隔的参数列表]) -> {body}

在下面的例子中,create() 方法有一个局部变量"value",其生命周期很短,当我们退出 create() 方法时,该变量就会消失。在 ma​​in() 方法完成后,此方法将闭包返回给该方法中的调用者。在此过程中,它从堆栈中删除变量"value",并且 lambda 表达式已执行。

示例

public class LambdaExpressionClosureTest {
   public static void main(String[] args) {
      Runnable runnable = create();
      System.out.println("在 main() 方法中");
      runnable.run();
   }
    public static Runnable create() {
      int value = 100;
// Lambda 表达式
      Runnable runnable = () -> System.out.println("The value is: " + value);
      System.out.println("In create() method");
      return runnable;
   }
}

输出

In create() method
在 main() 方法中
The value is: 100

相关文章