我正在尝试创建一个实现Blackberry Comparator
的类,这样我就可以轻松地对2D数组进行排序。
import net.rim.device.api.util.Comparator;
class ArrayComparator implements Comparator<Object[]> {
...
}
这给了我错误:
Type Comparator不是通用的;它无法参数化 参数
<Object[]>
如果我包含普通的JRE库并导入java.util.Comparator
,则此错误消失,但这不会编译,因为它是移动设备,库未经过预先验证等,等等。
如何解决此问题?
答案 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应该将o1
和o2
强制转换为数组。将来,如果您创建一个UserDataComparator,则compare方法应该将参数转换为您的UserData
类类型。
仅供参考:Blackberry的编译器(RAPC)最多支持java 1.4 AFAIK(检查this),因此不支持Generics,Enums和其他Java 1.5及以上功能。
编辑正如其他人所指出的那样(并且为了完整答案)我对我的答案并不够具体。我编辑了这个答案,以反映与您的问题相关的一些要点。