为什么直接写new NameComparator(),而不是new NameComparator().compare()

为什么直接写new NameComparator(),而不是new NameComparator().compare()

http://img1.sycdn.imooc.com//climg/60041c00096141ab10570084.jpg


为什么直接new NameComparator();这样子不是直接调用了构造放法吗,里面的重写compare为什么会调用到?

正在回答

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

1回答

同学你好 ,因为new NameComparator(),这里的NameComparator实现Comparator接口,重写了compare的方法呐

http://img1.sycdn.imooc.com//climg/6004f67409bf8f8a06980414.jpg

在调用sort方法时,将这个实现了Comparator接口的NameComparator类传入,在底层中根据重写的compare方法,catList根据这个比较方式进行排序

祝学习愉快~

  • 听风诉说 提问者 #1

    new NameComparator()传入sort(),是进行了向上转型,Comparator comparator =new NameComparator(); 然后将comparator  这个传入sort()里面,是这样理解吗

    2021-01-18 22:34:47
  • 好帮手慕小脸 回复 提问者 听风诉说 #2

    同学你好,理解有误,这里并未涉及向上转型,老师上面说的sort方法是指如下这里:

    http://img1.sycdn.imooc.com//climg/6006388609868f7c07590171.jpg


    sort()方法的第一个参数为要排序的集合对象。第二个参数为实现了Comparator接口的对象

    在NameCompartor类中实现了接口Comparator, 重写compare方法进行比较,然

    后直接在测试类调用Collections.sort方法进行排序;

    祝学习愉快~


    2021-01-19 09:41:24
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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