这是我正在研究的课程:

public class Thing<T extends Comparable<? super T>> {
   private Map<String, List<SourcedValue<T>>> properties;
}


然后,SourcedValue是这样的:

public class SourcedValue<T extends Comparable<? super T>>
                         implements Comparable<****?*****> {
  private T value;
  private List<Sources> sources;

  @Override
  public int compareTo(SourcedValue<****?****> other) {
    return value.compareTo(other);
  }
}


我要在***?***中放入什么?

我需要做的是在创建List<SourcedValue<T>>并填充的某些convert方法中对Thing中的Thing进行排序
properties(以及每个属性的List<SourcedValue<T>>)。

最佳答案

我不确定这是否对您有帮助,但这是我看到的实现您的要求的一种方法。如果能帮到您,我会很高兴。

public class SourcedValue<T extends Comparable<? super T>>
    implements Comparable<SourcedValue<? super T>> {
private T value;
private List<Integer> sources;

@Override
public int compareTo(SourcedValue<? super T> o) {
    return value.compareTo((T)o.value);
    }
}


另外,在这里使用super似乎是多余的。甚至以下解决方案也应产生相同的结果

public class SourcedValue<T extends Comparable<T>>
    implements Comparable<SourcedValue<T>> {
private T value;
private List<Integer> sources;

@Override
public int compareTo(SourcedValue<T> o) {
    return value.compareTo(o.value);
}
}

关于java - 在这种情况下如何声明Java Comparable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56498727/

10-13 06:36