Java中闭包的现状是什么?

19

有人知道Java 7是否会引入闭包吗?


2
似乎闭包又回来了:http://puredanger.com/tech/2009/11/18/closures-after-all/ - trunkc
1
叹气,哦Java,你曾经是如此酷,发生了什么事? - maerics
我投票关闭此问题并提出一个更新的问题,因为它将更加符合未来功能的要求——可能是Java 7中的闭包的重复。 - nawfal
6个回答

19

在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在2008年12月的Devoxx上表示,由于缺乏如何实现的共识,闭包将不会包含在Java 7中。


13

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


等等!闭包将被包含在Java 7中。Mark Reinhold在Devoxx 2009宣布了这一逆转的决定。点击此处查看更多信息。


请稍等!闭包(lambda表达式)已被推迟至Java 8。请关注项目Lambda (JSR 335)获取更多信息。


感谢您保持这个答案的最新状态! - Garrett Hall

7

目前有几个竞争的提案, BGGA, CICE 等等。 不幸的是,最佳方法仍存在激烈的辩论。 因此,由于验收过程的保守性质,目前不太可能将闭包引入Java 7。

关键问题在于,在不经意间引入显着复杂性的情况下,向现有语言添加功能可能非常困难。 这就是Java 1.5中的泛型经历,许多人担心引入闭包会加剧这种情况。

我的建议是,如果您真的想要访问像闭包这样的现代语言功能,但希望留在Java生态系统内,请查看Scala


Groovy 也支持闭包。 - Rui Vieira
+1:我完全同意:添加闭包会使语言更加复杂,如果确实想要使用它们,可以使用Scala。 - Giorgio

3

Groovy是我见过的最好的Java替代品,它包含了动态语言的特性,如闭包、运行时类扩展等。虽然在我看来Ruby有一点设计优势,但我必须说,Groovy编译成Java字节码并与Java交互而无需任何接口代码是一个巨大的优势,不能忽视。

http://groovy.codehaus.org


2

显然,Java 7 将不支持闭包。 请参见这里这里


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接