在我给我公司的讲座中,我建议将任何复杂的lambda转换为方法参考(更具可读性和更好的调试和测试),并询问是否总是可行。
我搜索过,无法找到无法用方法参考替换的lambda。
我是对的吗? (lambda总是可以用方法引用替换)答案 0 :(得分:10)
方法引用无法捕获变量。因此捕获lambda不能直接转换为方法引用。例如,
int x = 1;
numbers.replaceAll(n -> n + x);
在某些情况下,如果只捕获一个变量,则可以将lambda转换为捕获变量的方法引用。例如,
String greeting = "Hello, ";
people.replaceAll(name -> greeting + name);
可以转换为方法引用
people.replaceAll(greeting::concat);