Java中当前的闭包状态是什么?

有人知道,如果关闭将在Java 7中吗?

在Devoxx 2008上, Mark Reinhold明确表示Java 7中不会包含闭包。


等待! 闭包包含在Java 7中.Mark Reinhold在Devoxx 2009上宣布了这一逆转 。


那个! 闭包( lambda表达式 )已推迟到Java 8.请关注Project Lambda(JSR 335)以获取更多信息。

在创建Java SE 7 JSR之前(大概是由Danny Coward创建)并且形成专家组并选择内容,这是未知的。

我的Java 7页面是一个很好的Java 7链接集合,它包含所有闭包提议和博客条目的链接:

http://tech.puredanger.com/java7#closures

我维护了一个Java 7链接博客,您可以在其中找到有关闭包和其他内容的链接:

http://java7.tumblr.com

如果您需要我的意见,您可能会发现我的Java 7 Predictions博客文章也很有趣: http : //tech.puredanger.com/2008/08/02/java7-prediction-update/

更新:Mark Reinhold在去年12月的Devoxx上表示,由于缺乏对如何实施的共识,闭包不会包含在Java 7中。

目前有几个竞争性提案, BGGA , CICE等。 不幸的是,激烈的辩论仍然是最好的方法。 因此,由于接受过程的保守性,此时关闭不太可能使其成为Java 7。

这里的关键问题是,在预先存在的语言中添加function可能非常困难,而不会无意中引入显着的复杂性。 这是Java 1.5中Generics的经验,许多人担心它会与闭包的引入相结合。

我的建议是,如果你真的想要访问像闭包这样的现代语言function,但希望保留在Java ecosysteym中,你应该看看Scala 。

Groovy是我见过的最好的Java替代方案,其中包括动态语言的function,包括闭包,运行时类扩展等。虽然Ruby有一点点设计优势imho,但我不得不说Groovy编译成Java字节的事实在没有任何接口代码的情况下编码和与Java交互是一个不容忽视的巨大优势。

http://groovy.codehaus.org

显然,闭包不会在Java 7中。请参阅此内容 。

闭包不会在Java 7中明确存在,但是如果你正在寻找一个更轻的解决方案来解决java中的闭包问题,请查看它们是如何在lambdaj库中实现的:

http://code.google.com/p/lambdaj/wiki/Closures