在我公司的一次演讲中,我建议将任何复杂的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);

09-05 16:27