gpt4 book ai didi

java - 如何声明 Java 对象列表,其中每个对象都实现 Comparable

转载 作者:行者123 更新时间:2023-12-01 07:17:18 25 4
gpt4 key购买 nike

情况是这样的...

我有一个List<Object>我必须将它传递到代码的相当通用的部分。在某些部分,列表需要排序。

我不会预先知道列表中的对象类型。然而,通过这个列表的使用方式,我保证 Comparable 的合约这样列表中的每个项目都具有相同的类型并且能够相互比较。

换句话说,在某些情况下,真实类型最终将是 String ,在其他情况下,Date 。在其他情况下,某些东西 Customimplements Comparable<Custom> .

但是,在每种情况下,如果真实类型是 String ,列表中所有项目的类型均为 String .

让我更具体地改进这个问题......

这是我正在学习的类(class):

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 绑定(bind)的类型变量。因为 Comparable 充当消费者,PECS (producer extends, consumer super)建议对 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.
}
}

关于java - 如何声明 Java 对象列表,其中每个对象都实现 Comparable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56486386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com