问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

The method binarySearch(List<? extends Comparable<? super T>>, T) in the type Collections is not app

发布网友 发布时间:2022-05-11 00:33

我来回答

1个回答

热心网友 时间:2023-11-19 10:19

这是因为binarySearch的第一个参数类型是:
List<? extends Comparable<? super T>>

这个类型比较复杂,它首先要求你一个List对象,随后对这个List的泛型参数要求是:
? extends Comparable<? super T>

也就是一个实现了Comparable<? super T>接口的类T
然后来看你传入的参数是 List<Student>

所以Student类必须是一个 Comparable<? super Student> 的类,而你的Student类只实现了裸的Comparable,没有实现泛型版本的Comparable,所以参数不匹配追问“也就是一个实现了Comparable接口的类T”这句不太懂,为什么一定是类T,只是说参数一定是?superT也就是T型的,但是没说实现Comparable的类就一定是T型的啊。(List>, T)第二参数是comparable参数的父类,那我把第二参数编程object型,comparable还是不设置参数(就是默认参数是object),那样他们的不就一致了,为什么还是错的?还有泛型能继承和覆盖吗?

追答——“也就是一个实现了Comparable接口的类T”这句不太懂
之前的表述不太清楚,我重新尝试解释一下吧。binarySearch有一个显示的泛型参数T,和两个参数,第二个参数是T类型,这就决定了整个方法的泛型参数。你传的是Student类型,所以T在这里无疑是Student类

binarySearch的第一个参数是List>,而你传的是List,所以Student就代替了上面的第一个问号,也就是说Student类必须满足extends Comparable 这个条件,即Student类要实现Comparable接口。

注意的是这里的Comparable是有泛型的,也就是必须存在一个类U来代替上面Comparable泛型中的问号参数,并且U是T的父类(super你可以这样字面理解,但是准确的说应该是T类型的对象可以转换成U类型的对象,意味着T是U的子类,包括间接子类;或者T实现了U接口;或者T是U本身)。在这里,T是Student,所以U必须是Student的父类之一,或者Student实现的接口,或者Student本身

现在你的Student确实实现了Comparable,但实现的是没有泛型的Comparable接口。你必须实现有泛型的。比如你可以让Student implements Comparable,这样我说的U就是Student本身,调用没有问题。你也可以让Student implements Comparable,这样U就是Object,而Object是Student的父类,这样也没有问题。

——还有泛型能继承和覆盖吗?
这个问题是想说List继承List吗?不是,它们没有继承关系。所以List类型的对象不能传给List类型的参数。你必须把参数类型定义成List才能接受List类型的对象。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
姐妹们,哥伦比亚的徒步鞋怎么样?下个月就要去吴越古道户外徒步旅行... 徒步装备选哪个牌子好 徒步小白上线!想问问大神们徒步鞋哥伦比亚户外活动性能如何?方便吗? 去医院怎么检查自己缺钙和缺维生素? 查缺钙做什么检查 骨骼缺钙怎么检查 检查缺钙查什么 joryaweekend是什么牌子 剪映在那里修改视频尺寸 剪映如何修改视频画面尺寸 修改视频画面尺寸方法分享 我想知道SUJU从出道到现在的所有情况 &lt;T extends Comparable&lt;? super T&gt;&gt;这个怎么理解 关于super junior-T /super junior-M /super-K.R.Y ? java中泛型限定&lt;? extends Comparable&lt;? super T&gt;&gt; 和 &lt;T extends Comparable&lt;? super T&gt;&gt; 有什么区别? Java泛型&lt;? extends T&gt;和&lt;? super T&gt; Java 泛型 lt;super T&gt;中 super 怎么 理解?与 extends 有何不同 Java 泛型中super T和extends T的区别 supert是什么意思 笔记本电脑的开机和关机音乐怎么给关掉? 电子商务法律条文有哪些 我国出台的电子商务法律法规有哪些 联想笔记本开机音乐怎么消除 《电子商务法》确立的我国垮境电子商务国际法律发展战略是什么?_百度问一问 问一下笔记本自身音乐怎么关啊,谢谢各位 电子商务法的法律定义 联想笔记本开机音乐怎么关??? 任务1+分析《电子商务法》实施行业所发生的变化 中华人民共和国电子商务法共分多少章?每章的标题分别是什么 条形码怎么输入,请教,最好有图 怎样关闭笔记本主板开机音乐? java中 Arrays.sort()这个函数 我想用它API中提供的sort(T[] a, Comparator&lt;? super T&gt; c) 在周大福买了一条k金项链店员说是22k金,但是发票上写的还是18k金,而 22k金手饰是以什么单位定价的,我买条项链花了七千多了才十克是不是被杀猪了 T和supercharge的区别? 22k金项链花了一万多买的请问多少钱一克? 22k金能换成千足金吗 我电脑的Flash不能正常播放,QQ游戏的Flash模块打不开,游戏商城打不开,请给我个Flash的下载地址! 每次关闭QQ游戏时就会弹出一个Adobe Flash Player下载框,3 4 秒后又自动消失了是怎么回事 为什么QQ游戏可以进玫瑰小镇确进不了了,显示FISF PLAYER版本过低 是怎么回事 要怎么解决? QQ游戏玩不了。说是flash player什么的不是最新版本。这个怎么弄??? qq飞车flash插件下载 QQ游戏-浪漫玫瑰园-Flash Player版本过低 qq游戏中网页游戏打不开,以安装flash插件! 请问:在哪里可以收购原创词曲? 中国原创音乐基地 售歌 分期乐乐花借钱借过一次但是上面显示还可借金额2000为什么解不出来? 淘宝上怎么查看收藏我宝贝的有哪些人? 查看我的淘宝店铺被谁收藏了 梦见太阳上有骆驼人骑的驴 淘宝如何看谁收藏了某产品?