【发布时间】:2016-11-05 16:27:09
【问题描述】:
对于 Java 8 实例,您究竟是如何链接方法引用的?示例:
Collections.sort(civs,Comparator.comparing(Civilization::getStrategy.getStrategLevel));
Civilization 实例的getStrategy 返回具有实例方法getStrategyLevel 的Strategy 对象实例。
为什么Comparator.comparing 方法不返回一个比较器,它的功能接口由 lambda 表达式实现?
【问题讨论】:
-
只需使用 lambda。
-
方法引用是对方法的引用。链“调用
getStrategy(),然后在结果上调用getStrategyLevel())不是方法,因此不适合用方法引用来描述。如果要描述任意包的命令式代码,请使用lambda;方法引用是为特殊情况提供的(希望更具可读性)简写,其中 lambda 主体是单个方法,其参数列表与目标函数接口的参数列表完全匹配。
标签: java lambda java-8 comparator method-reference