Java 中闭包的现状如何?

What’s the current state of closures in Java?

提问人:trunkc 提问时间:9/23/2008 更新时间:7/28/2012 访问量:2895

问:

有谁知道,如果 Java 7 中会有闭包?

Java 闭包

评论

2赞 trunkc 11/19/2009
似乎关闭又回来了:puredanger.com/tech/2009/11/18/closures-after-all
1赞 maerics 6/24/2011
<唉>哦,Java,你以前那么酷,怎么了?
0赞 nawfal 7/5/2014
我投票以一个新问题结束,因为它将更符合未来的功能 - Java 7 中 Closure 的可能副本

答:

19赞 Alex Miller 9/23/2008 #1

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

我的 Java 7 页面是关于 Java 7 的链接的集合,并且包含指向所有闭包提案和博客条目的链接:

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

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

http://java7.tumblr.com

如果你想要我的观点,你可能会发现我的 Java 7 预测博客文章也很有趣:http://tech.puredanger.com/2008/08/02/java7-prediction-update/

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

7赞 sanity 9/23/2008 #2

目前有几个相互竞争的提案,BGGA、CICE等。不幸的是,关于最佳方法的激烈争论仍然存在。因此,由于接受过程的保守性,目前闭包不太可能进入 Java 7。

这里的关键问题是,在不无意中引入显着复杂性的情况下,向预先存在的语言添加功能可能非常困难。这就是 Java 1.5 中泛型的经验,许多人担心它会随着闭包的引入而变得更加复杂。

我的建议是,如果你真的想访问现代语言功能,比如闭包,但又希望留在 Java 生态系统中,你应该看看 Scala

评论

0赞 Rui Vieira 2/11/2009
Groovy 还支持闭包。
0赞 Giorgio 1/22/2012
+1:我完全同意:添加闭包会使语言更加复杂,如果真的想使用它们,可以使用 Scala。
3赞 billjamesdev 9/23/2008 #3

Groovy 是我见过的最好的 Java 替代品,它包含动态语言的功能,包括闭包、运行时类扩展等。虽然 Ruby 在设计上有一点优势,但我不得不说,Groovy 编译成 Java 字节码并在没有任何接口代码的情况下与 Java 交互,这是一个不容忽视的巨大优势。

http://groovy.codehaus.org

2赞 Joshua Fox 2/11/2009 #4

显然,Closures 不会出现在 Java 7 中。 看到这个和这个

1赞 Mario Fusco 9/12/2009 #5

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

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

13赞 erickson 12/31/2009 #6

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


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


保护那个!闭包(lambda 表达式)已推迟到 Java 8。有关更多信息,请关注 Project Lambda (JSR 335)。

评论

0赞 Garrett Hall 1/26/2012
感谢您及时更新此答案!