是否有不能作为方法引用的 lambda 函数
is there a lambda function that cannot be a method reference
在我公司的一次演讲中,我建议将任何复杂的 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);
在我公司的一次演讲中,我建议将任何复杂的 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);