为什么不排序(Comparator :: reverseOrder)有效?

以下Stream表达式完美无缺:

Stream s = Stream.of("yellow","blue", "white"); s.sorted(Comparator.reverseOrder()) .forEach(System.out::print);` //yellowwhiteblue 

为什么没有与方法引用相同的编译?

 s.sorted(Comparator::reverseOrder).forEach(System.out::print); 

Comparator类型不定义此处适用的reverseOrder(String,String)

方法引用告诉Java“将此方法视为单方法接口的实现” – 也就是说,方法引用应该具有签名int foo(String,String) ,从而实现Comparator

Comparator.reverseOrder()不 – 它返回一个Comparator实例 。 由于sorted正在寻找一个Comparator ,它可以获取方法调用的结果,但它不能使用该方法作为接口实现。

带有方法引用s.sorted(Comparator :: reverseOrder)的代码行告诉Java有一个带有普通方法比较器签名的静态方法,它意味着有两个参数。

Comparator类只有没有参数的静态方法reverseOrder ,这就是编译错误的原因。