Java lambda (JSR 335) : Why "eliminate support for unbound inner class constructor references"?

标签 java jsr335

current JSR 335 draft , 它在更改日志中提到 entry for 0.6.0它“消除了对未绑定(bind)内部类构造函数引用的支持”。

为了说明,假设您有一个名为 A 的外部类和一​​个名为 B 的内部类,并且您想要一个接受 A 的函数> 并创建一个新的 B 实例:

Function<A, A.B> foo = a -> a.new B();

在 0.6.0 之前,您还可以使用构造函数引用语法来做同样的事情(它甚至记录在 State of the Lambda 中):

Function<A, A.B> foo = A.B::new;

如上所述,0.6.0 不再支持该语法。我真的很想知道为什么。

我查看了 lambda-spec-experts 的文件和 lambda-dev邮件列表,找不到任何相关信息。

最佳答案

很明显,'new' 是一个关键字,而不是一个方法,并且所有将 'new' 作为方法涉及的都是编译器中的特例。我可以很容易地想象他们想要清理编译器中最不可能的用法,这些用法具有微不足道的解决方法。

推测:可能还有一些冲突/歧义需要解决,我们还不知道即将推出的 JLS,这是一个过渡更改,以尽量减少回归。在您提出问题后 5-6 年,您是否因这种变化而感到痛苦?哈哈

关于Java lambda (JSR 335) : Why "eliminate support for unbound inner class constructor references"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203781/

相关文章:

java - 在集成测试之间刷新共享缓存

java - 字符串对齐

java - 如何在 Tomcat 中为单个 Web 应用程序设置时区?

java - 为什么 Java 8 接口(interface)方法中不允许出现 "final"?

java - JVM 中有 JSR-335 特殊支持吗?提升基于 JVM 的函数式语言?

java - 使用 ParseInt 从命令行转换字符串并分配绘制的 g2 图形的列和行

java - 将 xml 文档作为参数传递给 xsl