2012-08-10 71 views
2

我想創建一個實現Blackberry的Comparator的類,以便我可以輕鬆地對二維數組進行排序。「該類型不是通用的,它不能用參數參數化」

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

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

這給我的錯誤:

The Type Comparator is not generic; it can not be parameterized with arguments <Object[]>

這個錯誤消失,如果我有正常的JRE庫,並導入java.util.Comparator,但是這不能編譯,因爲它是一個移動設備,圖書館沒有預先驗證等等等等。

我該如何解決這個問題?

+0

刪除通用類型參數'Object []'。比較方法應該有一個'Object'參數,你需要進行演示。 – Lee 2012-08-10 15:27:50

+0

...不要嘗試使用泛型參數?寫一個通用的接口? – 2012-08-10 15:30:52

回答

2

Sicne你正在爲一個你不需要(也不能使用)泛型的特定類定義一個比較器。比較之前,您的數組比較器應該將Object類型參數轉換爲其相應類型的參數,然後再進行比較。

例如,您的ArrayComparator應將o1o2轉換爲數組。將來,如果您創建UserDataComparator,則比較方法應將參數轉換爲UserData類類型。如果您的BlackBerry設備支持Java 1.4 AFAIK(請參閱this),那麼您不支持泛型,枚舉和其他Java 1.5及更高版本的功能。

編輯正如其他人指出的(爲了完整的答案),我的口氣不夠明確。我編輯了這個答案以反映與您的問題相關的一些關鍵點。

+0

在BlackBerry Java中,您實際上**不能**使用泛型。並不是說你不需要使用泛型。其他兩個答案之一應該是被接受的答案之一。 – Nate 2012-08-11 07:08:47

+0

@Nate我只是指出他實際上並不需要這種情況下的泛型。能夠使用泛型是另一回事,因爲我知道它不支持泛型,因爲它也不支持例如枚舉。下一次我應該更具體一些。 – Gamb 2012-08-12 01:42:42

3

net.rim.device.api.util.Comparator不具有通用功能。您需要實現沒有任何類型信息的Comparator,並比較數組中的所有項目。如果數組的項目是objets,則需要在此Objets上實現Comparator接口。

你可以得到這個link

3

黑莓JRE更多實現信息是1.3(如CLDC 1.1),不支持泛型,非同步收藏等東西從現代Java世界。

相關問題