Java 闭包的 C3S 提案作者 Howard Lovatt,为四份著名的提案( C3S 、 FCM 、 CICE 和 BGGA )编写了一份详细的比较。同时,FCM 的作者们发布了一份新的建立于FCM 基础上的关于Java 控制抽象的意见书。Ricky Clarkson 认为 CICE 是不足的,而且怀疑 Google 的内部策略正影响着它。
Lovatt 遍历了四份提案,并以十一个特性比较了它们:
- 创建一个内部类 / 闭包实体时的短语法
- 访问内部类的
this
指针与方法 - 多于一个方法存在于内部类 / 闭包实体
- 定义于类的方法的实现
- 类型推断
- 方法、构造函数、属性的字面表达
- 短语法(特别用于控制结构语句与短方法)
- 局部变量的赋值,无需
final
声明 - 数量可变的异常
- 方法 / 函数的类型(使用更短的语法)
- 非局部跳转、
return
、break
与continue
他文章的目的是从提案中分开内部类 / 闭包的部分与其他额外的部分。在这篇比较的最后,Stephen Colebourne、Stefan Schulz 和 Ricky Clarkson 建立了一份基于 FCM 的关于 Java 控制抽象的意见书(他们澄清说那不是一份意见书而且还没最终完成)。需要 JCA 参与的原因是有一些地方还不适合。比如存在一个 API,在使用上与内置的关键字非常相像。
最后,Ricky Clarkson 怀疑 Google 的内部策略正影响着 CICE 提案的进一步发展。JCP 对向它提交议案的组织有着限制,特别是当公司的雇员是 JCP 的成员时,Clarkson 建议 Josh Bloch,Google 在 JCP 的联系人,既然他提交了 CICE 的提案,就应该在创建 JSR 时回避。CICE 的另一位作者 Bob Lee 回应 Clarkson 说这是个不公平的建议,而且现在不用急急忙忙的闭包加入到 Java 中。
译者简介:肖桦是 InfoQ 中文站的志愿者翻译。他的网名为“江南白衣”,Java 领域专家,开源JavaEE 项目 SpringSide 发起人,现任广州电信研究院亿迅科技有限公司任设计中心设计主管。加入 InfoQ 中文站志愿者翻译队伍,请邮件至 china-editorial@infoq.com 。
评论