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
只需要 1 个参数。
int compareTo(T o)
在 Java 8 中,以下代码完美运行。但是,我预计会出现编译错误,例如“Integer 类未定义 compareTo(Integer, Integer)”。
int max = Stream.of(0, 4, 1, 5).max(Integer::compareTo).get();
有人可以帮助解释为什么可以将实例传递Comparable
给期望实例的方法,Comparator
即使它们的方法签名不兼容?