gpt4 book ai didi

java - openJDK 版本号 - 这些是宏吗? : $MAJOR. $次要.$安全。如何访问这些内容?

转载 作者:行者123 更新时间:2023-12-01 19:05:18 25 4
gpt4 key购买 nike

this link有关于版本号的讨论。那里或我发现的其他任何地方都没有解释这些宏观的东西是什么。例如,在什么上下文中使用“$VNUM”?其范围是什么?它是在 openJDK 编译期间使用的 C++ 头文件中定义的吗?可以从我的 java 程序中访问它吗?它是某种环境变量吗?

感谢您的任何解释。

最佳答案

后跟名称的 $ 是在 Unix shell 脚本和命令行提示符中使用变量的标准方法。您链接到的 JEP 实际上并不是指 Unix 命令,而是使用该语法来指示某些值的排列方式。

如果您现在在 Linux 或 OS X 中打开终端,您可以输入类似以下内容来查看变量替换的工作原理:

MAJOR=11
MINOR=0
SECURITY=3
echo $MAJOR.$MINOR.$SECURITY

作者可以使用 Java 语法来描述它,例如 major + "."+小调+“。” + 安全性,或者可以用类似 BNF 的符号来描述它,但选择这样做。

版本元素由 Runtime.Version 的实例使用类(class)。您可以使用 Runtime.version() 获取当前运行的 JVM 的实例。方法。

你为什么想看它?解决特定版本中的已知错误,或在可用时使用更新的 API。

如果您想获取 JEP 描述为 $VNUM 的值,您可以这样写:

String vnum = Runtime.version().version().stream().map(Object::toString).collect(
Collectors.joining("."));

...它将主要/次要/安全数字(实际上不再这样称呼)与中间的句点连接起来。

但是,通常情况下,您不需要该字符串。您更有可能比较版本,以测试特定的错误或功能:

Runtime.Version requiredVersion = Runtime.Version.parse("11");

if (Runtime.version().compareTo(requiredVersion) < 0) {
System.err.println("This program requires Java 11 or later.");
System.exit(1);
}

关于java - openJDK 版本号 - 这些是宏吗? : $MAJOR. $次要.$安全。如何访问这些内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59570990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com