可悲的是,它并不是简单的超载......
我正在尝试将我的应用程序从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方法仍然存在,但我似乎无法称之为...
答案 0 :(得分:2)
我相信你在3.3中调用的.sort()
方法“仅仅”是Railo的railo.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数组字符串和默认java.text.Collator
在Railo 4.0.4.001上对此进行了测试,因此我相信它也适用于您的java.util.Comparator
实现。