"类型不是通用的,不能用参数"参数化。

时间:2012-08-10 15:19:20

标签: blackberry java-me

我正在尝试创建一个实现Blackberry Comparator的类,这样我就可以轻松地对2D数组进行排序。

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

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

这给了我错误:

  

Type Comparator不是通用的;它无法参数化   参数<Object[]>

如果我包含普通的JRE库并导入java.util.Comparator,则此错误消失,但这不会编译,因为它是移动设备,库未经过预先验证等,等等。

如何解决此问题?

3 个答案:

答案 0 :(得分:3)

net.rim.device.api.util.Comparator没有通用功能。您需要在没有任何类型信息的情况下实现Comparator并比较阵列的所有项目。如果数组的项是objets,你也需要在这个Objets上实现Comparator接口。

您可以获得有关此link

的更多实施信息

答案 1 :(得分:3)

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

答案 2 :(得分:2)

你正在为你不需要(也不能使用)泛型的特定类定义一个比较器。数组比较器应将Object类型参数强制转换为相应的类型,然后再比较您所覆盖的比较方法。

例如,您的ArrayComparator应该将o1o2强制转换为数组。将来,如果您创建一个UserDataComparator,则compare方法应该将参数转换为您的UserData类类型。

仅供参考:Blackberry的编译器(RAPC)最多支持java 1.4 AFAIK(检查this),因此不支持Generics,Enums和其他Java 1.5及以上功能。

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