在我公司的一次演讲中,我建议将任何复杂的 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);
关于java - 是否有不能作为方法引用的 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35443655/