闭包如何在Java 7中运行?

时间:2013-10-24 22:07:24

标签: java closures

我还没有使用java 7中的闭包,并且想知道它们是如何工作的,它们的主要优势或最佳使用案例是什么?

更新

我应该更好地完成我的作业。以下是 JSR 335:Java编程语言的Lambda表达式Project Lambda site。他们声称clousures将在Java 8中。我将不得不更多地研究它以确定是否真的如此。

1 个答案:

答案 0 :(得分:2)

Java 7没有闭包。他们已经被传言很长一段时间了,他们显然已经出现在Java 8中了。当然,我已经答应了Ghostbusters重启,这也是传言。

但是,您可以使用anonymous inner classes伪造闭包。但不要搞错,这些都不是封闭。

至于闭包的好处,我不能把它比这个@jaif的Stack Overflow传奇post更好:

“你可以把它视为一个阶级的概括。

你的班级有一些州。它有一些其方法可以使用的成员变量。

闭包只是一种让函数访问本地状态的更方便的方法。

您不必创建一个知道您希望函数使用的局部变量的类,而只需在现场定义函数,它就可以隐式访问当前可见的每个变量。

当您使用传统OOP语言定义成员方法时,其闭包是“此类中可见的所有成员”。

具有“正确”闭包支持的语言只是概括了这一点,因此函数的闭包是“这里可见的所有变量”。如果“here”是一个类,那么你有一个传统的类方法。

如果“here”在另一个函数内部,那么你有一些函数式程序员认为是一个闭包。您的函数现在可以访问父函数中可见的任何内容。

所以这只是一个概括,删除了“函数只能在类中定义”的愚蠢限制,但保持“函数可以看到任何变量在它们被声明的位置可见”的想法。 “