【问题标题】:Status of Java exotic identifiersJava 外来标识符的状态
【发布时间】:2021-02-17 18:16:19
【问题描述】:

在查看Java invokedynamic documentation 时,我看到了以下名为“外来标识符”的 Java 功能示例:

int #"strange variable name" = 42;
System.out.println(#"strange variable name");  // prints 42

我无法让它在我的机器上的 openjdk8 上运行。进一步谷歌搜索发现了一些与此功能相关的错误报告,但没有太多其他内容。特别是this bug,和 this other bug

另一个错误 here 表明此功能已在 jdk7 中删除/从未。

这是以前的 Java 功能,后来被删除了,还是从来都不是官方的 Java 功能?这会被添加回来吗?

【问题讨论】:

    标签: java java-8 language-lawyer java-7 jls


    【解决方案1】:

    您链接的那个文件是一个提案、一个调查、一个改进请求。这从未被采纳为 Java 的官方特性。

    【讨论】:

    • 我的理解是,invokedynamic,也就是本文档所描述的,被采纳为官方特性。你知道为什么外来标识符的一部分/为什么它被删除?
    • 说明这一点的文档会说明它支持哪个版本的 java。是哪个版本的?
    • InvokeDynamic 通过了标准的 Java 规范请求流程 (JSR) 并被批准包含在该语言中,从 Java 8 开始(我相信)。这个项目wiki.openjdk.java.net/display/mlvm 从未作为 JSR 提交,它只是 OpenJDK 的几个人使用 Java 开源完成的项目。
    • this 和 invokedynamic 的共同点是通过 JVM 支持非 Java 语言。但这从来不是调用动态工作的一部分。
    • 显然这些家伙有点野心勃勃,针对 Oracle 公开了 bug,这是在浪费时间。
    猜你喜欢
    • 1970-01-01
    • 2021-04-26
    • 2015-09-14
    • 2021-01-06
    • 2017-09-05
    • 2020-07-10
    • 2012-06-19
    • 2014-04-10
    • 2013-10-14
    相关资源
    最近更新 更多