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