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

时间:2008-09-22 19:14:28

标签: java closures

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

6 个答案:

答案 0 :(得分:19)

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

My 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中。

答案 1 :(得分:13)

在Devoxx 2008上,Mark Reinhold made it clear关闭将不会包含在Java 7中。


等待!闭包包含在Java 7. Mark Reinhold announced this reversal的Devoxx 2009中。


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

答案 2 :(得分:7)

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

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

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

答案 3 :(得分:3)

Groovy是我见过的最好的Java替代方案,其中包括动态语言的功能,包括闭包,运行时类扩展等。虽然Ruby有一些轻微的设计优势,但我不得不说Groovy编译的事实到Java字节码并与Java交互而没有任何接口代码是一个不可忽视的巨大优势。

http://groovy.codehaus.org

答案 4 :(得分:2)

显然,闭包不会出现在Java 7中。 见thisthis

答案 5 :(得分:1)

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

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