java - 为什么 sorted(Comparator::reverseOrder) 不起作用?

标签 java java-8 java-stream comparator

下面的 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 “将此方法视为单一方法接口(interface)的实现”——也就是说,方法引用应具有签名 int foo(String,String)从而实现Comparator<String> .

Comparator.reverseOrder()不会——它返回 一个 Comparator实例。自 sorted正在寻找 Comparator ,它可以获取方法调用的结果,但不能将该方法用作接口(interface)实现。

关于java - 为什么 sorted(Comparator::reverseOrder) 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43036611/

相关文章:

java - 不支持的 major.minor 版本 52.0 错误

java - 使用java流将最后遇到的值放入 map

java - 是否可以将 steam 操作的结果发送到另一个函数而不将其收集到另一个变量中

java - 当我输入正确和错误的密码时什么都没有发生

Java 8 在多维对象数组中找到值的第一个实例

java - 如何解决 Java 8 中的这个 'Lambdas should be replaced with method references' 声纳问题?

java - 如何将 Java 8 Stream 转换为二维数组?

java - Java流问题,mapToInt和平均值方法

java - 如何从另一个 fragment 调用方法

java - 如何根据现在的月份检查选择的季节是否正确?