aio*_*obe 16
这些是在相同的上下文中经常提到的两个不同的术语.
一个拉姆达基本上只是一个匿名函数.示例:() -> System.out.println("Hello").这是一个功能,但它没有名称.
一个封闭是关于作用域的术语.例如,当你引用lambda中的局部变量时,如下所示
int localInt = 17;
saveThisFunction(() -> System.out.println(localInt));
Run Code Online (Sandbox Code Playgroud)
你创建一个闭包来捕获 localInt lambda内部.在文本上看起来很明显可以访问localIntlambda内部,但请记住,lambda可以在localInt从堆栈中弹出后很长时间存储和调用.
因此,创建lambda表达式通常需要创建一个闭包(隐式).