java中泛型限定<? extends Comparable<? super T>> 和 <T extends Comparable<? super T>> 有什么区别?

详细说下, 谢谢!!!!!

我也是刚学这个没多久,不能保证我的说法完全正确。我的理解是
<? extends Comparable<? super T>>代表任何实现了comparable接口的实例,且接口的类型是comparable<T 或其父类>。
<T extends Comparable<? super T>>代表类型是T的实例,且这个T要实现comparable 接口,接口的类型是comparable<T 或其父类>

两者的区别大概是前者范围更广,可以是T 或其子类,甚至是只要实现了comparable<T 或其父类>接口的其他类(虽然觉得没啥卵用)。而后者,只能是T 。。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-21
您好,提问者:
<? extends Comparable>
这个?就是传过来的对象不确定,而且必须是Comparable的子类或者子接口。
<? super T>
这个表示传过来的值,是定义T泛型的父类,如果不是给出代码检测失败。本回答被网友采纳
第2个回答  2018-10-22
我是这样理解的:
首先<? extends Comparable<? super T>> 和<T extends Comparable<? super T>> 这两个,是两种不同的类型形参范围设置方式,前者是通配符的形式,后者是自定义类型的形式。
这两者在有些时候可以通用,有时则不能或者不合适。
通配符是被设计用来支持子类灵活化的,如果某个方法中一个形参a的类型或返回值的类型依赖于另一个形参b的类型,则形参b的类型声明不应该使用通配符,因为依赖性比较强,b类型无法确定,a也无法定义。这时就要采用自定义类型传入自定义的T.
相似回答