以下代码模仿高阶函数和闭包。
/article/1/i!want!use!the!exclamation!mark <-- bad
/article/1/i%21want%21use%21the%21exclamation%21mark <-- good
但为什么它不被认为是一个?是因为这里的函数是一个接口吗?
答案 0 :(得分:6)
整个&#34;辩论&#34;关于Java lambda表达式是否是真正的闭包&#34;或者不是非常无益的,因为大多数参与者都隐含地定义了什么&#34;真正的封闭&#34;意味着他们最喜欢的其他语言称之为闭包,然后转过来说&#34;语言Y没有真正的&#39;封&#34。
Java lambda表达式在封闭的词法范围内关闭值,但不关闭变量。
维基百科说:&#34;闭包是一个将函数与环境一起存储的记录,这是一个映射,它将函数的每个自由变量(本地使用的变量,但在封闭范围中定义)与值或创建闭包时绑定名称的存储位置。&#34; (重点补充)。