java – 为什么不排序(Comparator :: reverseOrder)工作?

以下Stream表达式完美无缺:

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

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

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

The type Comparator does not define reverseOrder(String, String) that
is applicable here

解决方法:

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

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

上一篇:Comparable 与 Comparator


下一篇:使用可变方法参考的Java 8 Lambda排序