2

我正在尝试创建一个实现黑莓的类Comparator,以便我可以轻松地对二维数组进行排序。

import net.rim.device.api.util.Comparator;    

class ArrayComparator implements Comparator<Object[]> {
    ...
}

这给了我错误:

类型比较器不是通用的;它不能用参数参数化<Object[]>

如果我包含正常的 JRE 库和 import ,这个错误就会消失java.util.Comparator,但这不会编译,因为它是移动设备,库没有预先验证,等等等等。

我该如何解决这个问题?

4

3 回答 3

3

net.rim.device.api.util.Comparator 没有通用功能。您需要在没有任何类型信息的情况下实现 Comparator 并比较数组的所有项目。如果数组的项是对象,则还需要在此对象上实现 Comparator 接口。

您可以在此链接上获得更多实施信息

于 2012-08-10T15:29:04.583 回答
3

BlackBerry JRE 是 1.3(类似于 CLDC 1.1),不支持现代 Java 世界中的泛型、非同步集合和其他东西。

于 2012-08-10T16:48:02.477 回答
2

Sicne 您正在为不需要(也不能使用)泛型的特定类定义比较器。Object在您覆盖的比较方法中进行比较之前,您的数组比较器应该将类型参数转换为相应的类型。

例如,您的 ArrayComparator 应该将o1ando2转换为数组。将来,如果您制作 UserDataComparator,则比较方法应将参数转换为您的UserData类类型。

仅供参考:Blackberry 的编译器 (RAPC) 最多支持 java 1.4 AFAIK(检查),因此不支持泛型、枚举和其他 Java 1.5 及更高版本的功能。

编辑正如其他人指出的那样(并且为了完整的答案),我的回答不够具体。我已编辑此答案以反映与您的问题相关的一些关键点。

于 2012-08-10T15:28:11.637 回答