【发布时间】:2011-03-04 01:11:29
【问题描述】:
在阅读了一些 OpenJDK 邮件列表条目之后,似乎 Oracle 开发人员目前正在进一步从闭包提案中删除一些内容,因为 Java 语言中早期的设计错误使 Java 闭包的引入变得复杂。
考虑到 Scala 闭包比为 Java 8 计划的闭包强大得多,我想知道是否可以 e. G。调用一个 Java 方法,从 Scala 中获取一个闭包,在 Java 中定义一个闭包并将其提供给 Scala 函数等?
那么 Java 闭包会像在字节码中的 Scala 对应物一样表示还是以不同的方式表示? 是否有可能缩小 Java/Scala 闭包之间的功能差距?
【问题讨论】:
-
我怀疑在接近 Java 7 版本之前我们无法确定
-
不是一个真正的问题。您当然可以使用来自 Scala(和其他语言)的 Java 闭包,这对于运行时可操作性来说是件好事。但是没有指定 Java 闭包,所以细节还没有。
-
@Thomas 是什么让你如此确定,Java 闭包可以在 Scala 中使用,考虑到 Scala 闭包是作为类实现的,这并不意味着 Java 必须使用 scala 的 FunnctionX 作为参数类型?
-
@soc - Thomas 只是意味着,因为所有 Java 类都可以从 scala 中使用,所以新的类也可以使用。可能
-
@Martin。最初并不确定关闭是否在 Sun 的 Java 议程上。 (事实上,很确定他们不在议程上)。然后 Sun 宣布将它们列入议程,因为 Fork/Join 框架需要它们。那发生在去年的某个时候。几周前,Oracle 决定在 Java 7 中获得闭包会过多地延迟 Java 7,所以现在 Java 7 将很快发布(ish),并且将闭包推迟到 Java 8。
标签: java scala closures scala-java-interop