gpt4 book ai didi

java - 确定所有 Java 发行版中的主要 Java 版本

转载 作者:搜寻专家 更新时间:2023-10-31 08:14:35 24 4
gpt4 key购买 nike

在 Java 8 及之前确定主要 Java 版本时,通常使用系统属性 java.specification.version,删除 1.,然后解析第二个数字:

  • 在 Java 8 上这会产生 "1.8" ~> "8" ~> 8
  • 在 Java 9 上,相同的调用会导致 NumberFormatException,因为系统属性是 "9"

什么是确定主要 Java 版本的面向 future 的方法?目标是获得一个 int ,它可以通过 ifswitch 来决定采用哪条代码路径(例如,在库以激活功能)。

最佳答案

Java 9 引入了 Runtime.Version 类,有望在未来一段时间内得到支持。将它与我得到的旧方法配对:

public static int getMajorVersion() {
try {
// use Java 9+ version API via reflection, so it can be compiled for older versions
Method runtime_version = Runtime.class.getMethod("version");
Object version = runtime_version.invoke(null);
Method version_major = runtime_version.getReturnType().getMethod("major");
return (int) version_major.invoke(version);
// do not catch `ReflectiveOperationException` because it does not exist in Java <7
} catch (Exception ex) {
// before Java 9 system property 'java.specification.version'
// is of the form '1.major', so return the int after '1.'
String versionString = System.getProperty("java.specification.version");
return Integer.parseInt(versionString.substring(2));
}
}

(我在 CC-0 下发布此代码:您可以复制、修改、分发和执行该作品,即使是出于商业目的,都无需征得许可。)

它在我的机器上工作(哈哈),但我不确定这是否是最好的解决方案,因为我不知道新的 API 或系统属性是否有任何我不知道的极端情况的。

另见 Stephen's answer为什么首先将版本减少到个位数可能不是一个好主意。

关于java - 确定所有 Java 发行版中的主要 Java 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261432/

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