Vij*_*nan 3 java comparator java-8 java-stream
下面的 Stream 表达式工作得很好:
Stream<String> s = Stream.of("yellow","blue", "white");
s.sorted(Comparator.reverseOrder())
.forEach(System.out::print);` //yellowwhiteblue
Run Code Online (Sandbox Code Playgroud)
为什么带有方法引用的等效方法无法编译?
s.sorted(Comparator::reverseOrder).forEach(System.out::print);
Run Code Online (Sandbox Code Playgroud)
Comparator 类型没有定义适用于此处的reverseOrder(String, String)
方法引用告诉 Java“将此方法视为单一方法接口的实现”——也就是说,方法引用应该具有签名int foo(String,String)并因此实现Comparator<String>。
Comparator.reverseOrder()没有——它返回一个Comparator实例。由于sorted正在寻找a,Comparator因此它可以获取方法调用的结果,但不能将该方法用作接口实现。
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |