【问题标题】:What’s the current state of closures in Java?Java 中闭包的当前状态是什么?
【发布时间】:2010-09-12 03:00:19
【问题描述】:

有人知道 Java 7 中是否会出现闭包吗?

【问题讨论】:

标签: java closures


【解决方案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 Predictions 博客文章也很有趣: http://tech.puredanger.com/2008/08/02/java7-prediction-update/

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

【讨论】:

    【解决方案2】:

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

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

    我的建议是,如果您真的想使用像闭包这样的现代语言功能,但又希望留在 Java 生态系统中,您应该看看 Scala

    【讨论】:

    • Groovy 也支持闭包。
    • +1:我完全同意:添加闭包会使语言更加复杂,如果真的想使用它们,可以使用 Scala。
    【解决方案3】:

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

    http://groovy.codehaus.org

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        Java 7 中肯定不会出现闭包,但如果您现在正在寻找更轻的解决方案来在 Java 中使用闭包,请查看它们是如何在 lambdaj 库中实现的:

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

        【讨论】:

          【解决方案6】:

          在 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) 了解更多信息。

          【讨论】:

          • 感谢您及时更新此答案!
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-09
          • 2010-10-22
          • 1970-01-01
          相关资源
          最近更新 更多