2

Comparator2D 配列を簡単にソートできるように、Blackberry を実装するクラスを作成しようとしています。

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 doesn't have Generic capabilities. You need to implement Comparator without any type information and compare all the items of the array. if the items of the array are objets, you need to implements the Comparator interface on this Objets too.

you can get more implementation information on this link

于 2012-08-10T15:29:04.583 に答える
3

BlackBerry JRE は 1.3 (CLDC 1.1 と同様) であり、ジェネリック、非同期コレクション、および最新の Java の世界のその他のものをサポートしていません。

于 2012-08-10T16:48:02.477 に答える
2

ジェネリックスを必要としない(そして使用できない)特定のクラスのコンパレーターを定義しているのです。配列コンパレータは、Objectオーバーライドするcompareメソッドで比較する前に、型パラメータを対応する型にキャストする必要があります。

たとえば、ArrayComparatorは配列にキャストする必要がo1あります。o2将来、たとえばUserDataComparatorを作成する場合、compareメソッドはパラメーターをUserDataクラスタイプにキャストする必要があります。

参考:Blackberryのコンパイラ(RAPC)は最大java 1.4 AFAIK(これをチェック)をサポートしているため、Generics、Enums、およびその他のJava1.5以降の機能はサポートされていません。

編集他の人が指摘したように(そして完全な答えのために)私は自分の答えについて十分に具体的ではありませんでした。私はあなたの問題に関連するいくつかの重要なポイントを反映するためにこの回答を編集しました。

于 2012-08-10T15:28:11.637 に答える