老师,这个方法里没有使用compareTo方法,为什么还要实现Comparable接口呢?

老师,这个方法里没有使用compareTo方法,为什么还要实现Comparable接口呢?

<Comparable<>> sortTest(String sortname,[] arr){
    startTime = System.();
    (sortname == ){
        SelectionSort.(arr);
    }
    endTime = System.();
    (!SortingHelper.(arr)){
        RuntimeException(sortname + );
    }
    time = (endTime - startTime) / ;
    System..println(time);
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2022-03-04 15:18:44

首先,这段代码不是“实现了”Comparable 接口,而是创建了一个泛型方法,并且对其中的泛型 E 做了约束,要求泛型 E 必须实现 Comparable 接口。


为什么泛型 E 必须实现 Comparable 接口?因为在这个方法中,泛型数组 E[] arr 要传给 SelectionSort.sort,而要想 sort,需要传入的数组元素是可比较的(实现了 Comparable 接口。)


实际把这个泛型约束去掉,看一看会不会出问题?会出什么问题?想一想为什么会出现这个问题?


继续加油!:)

  • 提问者 慕圣3398369 #1

    谢谢老师的指点!我开始就是因为没有加泛型约束编译报错了。您讲解后,我大概想明白了,泛型数组E[] arr增加泛型约束后表示这是一个可比较的数组,跟是否实现compareTo方法没有关系。

    如果把泛型约束去掉,在调用SelectionSort.sort(arr)时传入的就是普通泛型数组,导致编译报错。


    2022-03-04 16:10:57
  • liuyubobobo 回复 提问者 慕圣3398369 #2

    赞!就是这个意思。你理解了:)继续加油!:)

    2022-03-04 16:15:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师