[英]How to declare Java List of Object where each one implements Comparable
这是情况...
我有一个List<Object>
,必须将其传递到代码的相当通用的部分。 在某些部分中,列表需要排序。
我不会预先知道列表中是什么类型的对象。 但是,通过使用此列表的方式,我保证Comparable
的合同使列表中的每个项目都是同一类型,并且可以相互比较。
换句话说,在某些情况下,实际类型最终将为String
,而在其他情况下,则为Date
。 在另一些情况下,一些Custom
认为implements Comparable<Custom>
。
但是,在每种情况下,如果实际类型为String
,则列表中的所有项目都将为String
类型。
让我更具体地说明一下这个问题...
这是我正在研究的课程:
public class Thing {
private Map<String, List<SourcedValue<Object>>> properties;
}
然后, SourcedValue
是这样的:
public class SourcedValue<T> {
private T value;
private List<Sources> sources;
}
那么,您如何建议我宣布这一点?
您需要列表中的所有元素都是Comparable
,而不仅仅是Comparable
,彼此可比。 在方法级别实施此方法的方法是声明一个类型变量,其自身具有Comparable
。 由于Comparable
充当消费者,因此PECS(生产者扩展,消费者超级)建议对Comparable
本身的类型参数定下限。
public <T extends Comparable<? super T>> void yourMethod(List<T> list) {
// Your implementation here.
}
根据您的实际情况,类型变量T
可能在类而不是方法上。
public class YourClass<T extends Comparable<? super T>> {
public void yourMethod(List<T> list) {
// Your implementation here.
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.