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也可以将实例传递给期望实例的方法?