java中泛型限定<? extends Comparable<? super T>> 和 <T extends Comparable<? super T>> 有什么区别?
3个回答
展开全部
我也是刚学这个没多久,不能保证我的说法完全正确。我的理解是
<? extends Comparable<? super T>>代表任何实现了comparable接口的实例,且接口的类型是comparable<T 或其父类>。
<T extends Comparable<? super T>>代表类型是T的实例,且这个T要实现comparable 接口,接口的类型是comparable<T 或其父类>
两者的区别大概是前者范围更广,可以是T 或其子类,甚至是只要实现了comparable<T 或其父类>接口的其他类(虽然觉得没啥卵用)。而后者,只能是T 。。
<? extends Comparable<? super T>>代表任何实现了comparable接口的实例,且接口的类型是comparable<T 或其父类>。
<T extends Comparable<? super T>>代表类型是T的实例,且这个T要实现comparable 接口,接口的类型是comparable<T 或其父类>
两者的区别大概是前者范围更广,可以是T 或其子类,甚至是只要实现了comparable<T 或其父类>接口的其他类(虽然觉得没啥卵用)。而后者,只能是T 。。
2015-01-21 · 知道合伙人数码行家
关注
展开全部
您好,提问者:
<? extends Comparable>
这个?就是传过来的对象不确定,而且必须是Comparable的子类或者子接口。
<? super T>
这个表示传过来的值,是定义T泛型的父类,如果不是给出代码检测失败。
<? extends Comparable>
这个?就是传过来的对象不确定,而且必须是Comparable的子类或者子接口。
<? super T>
这个表示传过来的值,是定义T泛型的父类,如果不是给出代码检测失败。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我是这样理解的:
首先<? extends Comparable<? super T>> 和<T extends Comparable<? super T>> 这两个,是两种不同的类型形参范围设置方式,前者是通配符的形式,后者是自定义类型的形式。
这两者在有些时候可以通用,有时则不能或者不合适。
通配符是被设计用来支持子类灵活化的,如果某个方法中一个形参a的类型或返回值的类型依赖于另一个形参b的类型,则形参b的类型声明不应该使用通配符,因为依赖性比较强,b类型无法确定,a也无法定义。这时就要采用自定义类型传入自定义的T.
首先<? extends Comparable<? super T>> 和<T extends Comparable<? super T>> 这两个,是两种不同的类型形参范围设置方式,前者是通配符的形式,后者是自定义类型的形式。
这两者在有些时候可以通用,有时则不能或者不合适。
通配符是被设计用来支持子类灵活化的,如果某个方法中一个形参a的类型或返回值的类型依赖于另一个形参b的类型,则形参b的类型声明不应该使用通配符,因为依赖性比较强,b类型无法确定,a也无法定义。这时就要采用自定义类型传入自定义的T.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |