簡體   English   中英

在Java中對未知類型的列表進行排序

[英]Sorting list with unknown type in Java

我在一個方法中有這個列表:

List<? extends Object> objects;

或者它也可以是:

List<?> objects;

我想用Java 8 lambda這樣排序:

objects.sort((p1, p2) -> p1.compareTo(p2));

但它說:

方法compareTo(捕獲#6-of?)未定義類型捕獲#6-of?

我也嘗試過泛型類型:

List<O extends Object> objects;

但隨后它說:

對於類型O,方法compareTo(O)未定義

我怎么能這樣排序一個列表? 我需要它在我的抽象類中,它通過反射識別列表字段,並且可以對其進行排序。

compareTo可用於實現Comparable接口的對象。 如果你想這樣做,你應該使用

List<? extends Comparable> objects;

要獲得干凈的代碼,請查看@Holger的答案

如果您有信心,列表中的所有元素都是可以相互比較的,也就是說,它們不僅實現了Comparable ,而且還實現了Comparable<CommonBaseType> ,例如,當StringInteger實例是Comparable ,您無法將StringInteger並且列表中不能包含這兩種類型的實例,然后您可以繞過編譯時檢查

objects.sort(null);

當然,繞過編譯時類型檢查的所有后果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM