>的理解

形式

<>意味着java的泛型,而泛型的作用是
1.将运行时错误提前到编译器
2.自动的类型转换

简化版

首先理解一下<T extends Comparable>,这意味着 T 必须实现Comparable接口,而接口的数据类型也要是 T,因为T和T才能进行比较嘛。

<T extends Comparable<? super T>>

如果只有T的父类实现了Comparable接口,而子类也想用这个接口怎么办呢?

class Dog implements Comparable<Dog>{
    int weight;
    public Dog(int weight) {
        this.weight = weight;
    }
    @Override
    public int compareTo(Dog o) {
        return this.weight - o.weight;
    }
}
class Labrador extends Dog{
    public Labrador(int weight) {
        super(weight);
    }
}

作者:菜鸟Arthur
链接:https://www.zhihu.com/question/25548135/answer/171375587
来源:知乎

在这里Labrador 继承了Dog 和他的Comparable方法。但如果泛型是<T extends Comparable >显然 Labarador 是不符合的,因为他并没有实现 Comprable。如果改成<T extends Comparable<? super T>>,那么只要Dog实现了Comparabl接口。Labrador也能用啦。
针对这最后一句要强调的是,如果父类实现了一个接口,那么子类也是实现了这个接口的。具体百度。

为什么是extends而不是implements

理论上只有接口才能extends接口,原因见下,总之在泛型中,遇到后面是接口的话,可以将这边的extends看成是实现的意思
<T extends Comparable<? super T>>的理解

参考自 https://blog.csdn.net/Mrsgflmx/article/details/107819929

<T extends Comparable<? super T>>的理解

上一篇:操作dom节点


下一篇:浅谈类加载器与自定义类加载器