Nem*_*Sol 5 java lambda comparator java-8 method-reference
您如何精确链接Java 8实例的方法引用?例:
Collections.sort(civs,Comparator.comparing(Civilization::getStrategy.getStrategLevel));
Run Code Online (Sandbox Code Playgroud)
getStrategy一个的Civilization实例返回一个Strategy具有实例方法的对象实例getStrategyLevel。
为什么该Comparator.comparing方法不返回带有由lambda表达式实现的功能接口的比较器?
在这种情况下,您应该使用 lambda,不能直接应用方法引用:
Collections.sort(civs, Collectors.comparing(c -> c.getStrategy().getStrategLevel()));
Run Code Online (Sandbox Code Playgroud)
不过,这里有一种方法可以使用方法引用。假设你有一堂课
class CivilizationUtils {
public static Integer getKeyExtractor(Civilization c) {
return c.getStrategy().getStrategLevel();
}
}
Run Code Online (Sandbox Code Playgroud)
这个问题可以像这样解决
Collections.sort(civs, Collectors.comparing(CivilizationUtils::getKeyExtractor));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3025 次 |
| 最近记录: |