下面的 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/