该 Stream
Java 8中的类定义了一个 max
需要的方法 Comparator
论据。这是方法签名:
Optional<T> max(Comparator<? super T> comparator)
Comparator
是一个具有抽象的功能界面 compare
具有此签名的方法。注意 compare
需要2个参数。
int compare(T o1, T o2)
该 Comparable
界面有一个抽象 compareTo
具有此签名的方法。注意 compareTo
只需要一个参数。
int compareTo(T o)
在Java 8中,以下代码完美地运行。但是,我期望编译错误,例如“Integer类没有定义compareTo(Integer,Integer)”。
int max = Stream.of(0, 4, 1, 5).max(Integer::compareTo).get();
有人可以帮助解释为什么可以传递一个实例 Comparable
一个期望一个实例的方法 Comparator
即使他们的方法签名不兼容?