小编Bry*_*yan的帖子

将Comparable的实例传递给期望Comparator的方法

StreamJava 8中的类定义了一个max需要Comparator参数的方法.这是方法签名:

Optional<T> max(Comparator<? super T> comparator)
Run Code Online (Sandbox Code Playgroud)

Comparator是一个compare具有此签名的抽象方法的功能接口.通知compare需要2个参数.

int compare(T o1, T o2)
Run Code Online (Sandbox Code Playgroud)

Comparable接口具有compareTo带此签名的抽象方法.通知compareTo只需要1个参数.

int compareTo(T o)
Run Code Online (Sandbox Code Playgroud)

在Java 8中,以下代码完美地运行.但是,我期望编译错误,例如"Integer类没有定义compareTo(Integer,Integer)".

int max = Stream.of(0, 4, 1, 5).max(Integer::compareTo).get();
Run Code Online (Sandbox Code Playgroud)

有人可以帮助解释为什么即使他们的方法签名不兼容Comparable,Comparator也可以将实例传递给期望实例的方法?

java comparable comparator java-8 functional-interface

11
推荐指数
1
解决办法
3567
查看次数