1

可悲的是,它不仅仅是超载...

我正在尝试将我的应用程序从 railo 3.3 升级到 4.1

我经常使用底层的 java 方法,而且大多数时候这不是问题。我有一个使用 java Comparator 对象排序的数组:

a.sort(
    createObject(
        "java", 
        "AlphanumComparator", 
        "/model/java/AlphanumComparator.jar"
    )
);

在 3.3 上运行良好。但是随着 4.0 中的新成员函数,array.sort添加了一个新方法,其运行方式与arraySort().

现在我收到以下错误:

invalid sort type [AlphanumComparator@someid], sort types are [text, textNoCase, numeric]

转储getClass()显示原始的 java 方法仍然存在,但我似乎无法调用它...

4

1 回答 1

2

我相信.sort()您在 3.3 中调用的方法“仅仅是”Railorailo.runtime.type.ArrayImpl类的实现细节,而不是通用(标准)Java 类。因此,这会让您面临实施可能会发生变化的风险——而且确实如此。

一个小的代码更改将允许您使用那里java.util.Collections的静态sort()方法:

var Collections = createObject( "java", "java.util.Collections" );
Collections.sort( a, createObject( "java",
                                   "AlphanumComparator",
                                   "/model/java/AlphanumComparator.jar" ) );

我使用 CFML 字符串数组和默认值在 Railo 4.0.4.001 上对此进行了测试,java.text.Collator因此我相信它也适用于您的java.util.Comparator实现。

于 2013-06-28T17:58:15.687 回答