首页 > 其他 > 详细

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

时间:2021-08-25 18:03:23      阅读:7      评论:0      收藏:0      [点我收藏+]

形式

<>意味着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看成是实现的意思
技术分享图片

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

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

原文:https://www.cnblogs.com/Lanezzz/p/15185559.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!