gpt4 book ai didi

java - 在 Java 6 中编译,在 Java 7 中运行——如何指定 useLegacyMergeSort?

转载 作者:太空狗 更新时间:2023-10-29 22:46:18 24 4
gpt4 key购买 nike

我想知道如果我在 Java 6 中编译,但有人在 Java 7 上运行该程序,是否会使用 Java 6 或 7 版本的 Arrays.sort?

这很重要,因为新的合并排序会抛出 IllegalArgumentException,而旧的不会(参见 Comparison method violates its general contract! Java 7 only)

现在,可以使用 Arrays.useLegacyMergeSort 在 Java 7 中进行编译,但显然该标志不适用于 Java 6 - 我们希望在 Mac OS Snow Leopard(使用 6)上兼容。

出于某种原因(参见 http://madbean.com/2006/target14/)-target 编译器标志似乎无法生成兼容代码,因此我们宁愿在 Java 6 中编译。

有什么建议吗?

最佳答案

尝试设置系统属性

java -Djava.util.Arrays.useLegacyMergeSort=true ...

请注意,它不是来自 Arrays 公共(public) API,而是来自 src

   /**
* Old merge sort implementation can be selected (for
* compatibility with broken comparators) using a system property.
* Cannot be a static boolean in the enclosing class due to
* circular dependencies. To be removed in a future release.
*/
static final class LegacyMergeSort {
private static final boolean userRequested =
java.security.AccessController.doPrivileged(
new sun.security.action.GetBooleanAction(
"java.util.Arrays.useLegacyMergeSort")).booleanValue();
}

关于java - 在 Java 6 中编译,在 Java 7 中运行——如何指定 useLegacyMergeSort?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15893487/

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