为了账号安全,请及时绑定邮箱和手机立即绑定

问个问题。

http://img1.sycdn.imooc.com//5e99736800017f4112250298.jpghttp://img1.sycdn.imooc.com//5e9973a60001522306770381.jpg


//3.静态方法引用
Collections.sort(userList,User::compareByAge);
System.out.println(userList);


可以看到Collections.sort()第二个参数接收的是一个Comparator类型的对象。

这里为什么可以传入 User::compareByAge ?

User又没有实现Comparator接口,程序如何能确定我们再User里定义的compareByAge是Comparator接口的排序方法实现 ?

正在回答

1 回答

传入参数会自动进行类型检查,对传入输入进行对应方法调用,如果调用了对应的方法但是参数、返回值等出现不一致情况会检查出错吖;你想想如果我们自己设计类似的流程,是不是也会这样去考虑呢

0 回复 有任何疑惑可以回复我~
#1

马什么梅 提问者

我明白了。 意思就是User::compareByAge实现了Comparator<T>的int compare(T o1, T o2); 虚拟机做类型检查,通过就可以调用自定义的排序实现方法compareByAge()了。 看不到明确定义的implements XX,也看不到@Override,都是虚拟机在做判断,这样好抽象啊。
2020-04-19 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

问个问题。

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信