繁体   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