【发布时间】:2019-12-15 02:33:52
【问题描述】:
有没有办法在 lambda 表达式上调用方法?
考虑以下在 MileageComparator 上调用 reversed() 方法的示例:
Collections.sort(cars, new MileageComparator().reversed());
但是,如果我将 MileageComparator 编写为带有 reversed() 调用的 Lambda 表达式,则在编写时会出错
Collections.sort(cars, ((Car car1, Car car2) -> (int) (car2.getMileage() - car1.getMileage())).reversed());
虽然它可以正常工作而无需反转。
我确实知道我可以简单地交换 car1 和 car2 以获得相同的结果,但是我想知道通常是否可以对 lambda 表达式进行方法调用。
【问题讨论】:
-
使用
(Car car1, Car car2) -> (int) (car2.getMileage() - car1.getMileage())进行比较是一种不好的做法。在Comparator类中查看compare方法文档。
标签: java methods lambda expression