我想知道具有超界通配符的Collections.sort

时间:2019-05-08 00:24:18

标签: java

讲座说排序算法的结构如下。

public static <T extends Comparable<? super T> void sort<List<T> list

,如果排序中没有通配符,则下一个代码将发生错误。

class Car implements Comparable<Car> {
     private int id;
     public Car(int id) { this.id = id; }

     @Override
     public int compareTo(Car obj) {
     return this.id - obj.id;
}
class ECar extends Car {
     public ECar(int id) {
         super(id);
     }
}
public class Test {
    public static void main(String[] args) {
        List<ECar> list = new ArrayList<>();
        list.add(new ECar(1200));
        list.add(new ECar(1300));
        Collections.sort(list); // it will error
    }
}

原因是ECar类未实现Comparable<ECar>

我对此有疑问。尽管使用<? super T>实现了排序,但这并不意味着实现Comparable<ECar>

带有下界的通配符使T可以接受Car和ECar Object。但是如何解决以上问题?

0 个答案:

没有答案