<T extends Comparable<? super T>>的理解
形式
<>意味着java的泛型,而泛型的作用是
1.将运行时错误提前到编译器
2.自动的类型转换
简化版
首先理解一下<T extends Comparable
<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
针对这最后一句要强调的是,如果父类实现了一个接口,那么子类也是实现了这个接口的。以下参考自知乎
从基本的继承实现概念出发:若有:class Father implements Comparable< Father>以及:class Son extends Father则有:Son implements Comparable< Father>(子类自动实现父类所实现的接口)
如果定义Son时:
Son 没有implements Comparable
而对于这种情况:class A <T extends Comparable< ? super T>>new A< Son>是合法的,上述表达式中?可以匹配Father,因为Son implements Comparable< Father>从上可以看出这种写法的好处是父类若实现了Comparable< 父类>,那么即使子类没有实现Comparable<子类 >,一样可以new A< 子类>
作者:星空
链接:https://www.zhihu.com/question/25548135/answer/491019346
来源:知乎
为什么是extends而不是implements
理论上只有接口才能extends接口,原因见下,总之在泛型中,遇到后面是接口的话,可以将这边的extends看成是实现的意思

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

浙公网安备 33010602011771号