是否有一个lambda函数,不能作为方法引用

时间:2016-02-16 21:47:17

标签: java lambda java-8 method-reference

在我给我公司的讲座中,我建议将任何复杂的lambda转换为方法参考(更具可读性和更好的调试和测试),并询问是否总是可行。

我搜索过,无法找到无法用方法参考替换的lambda。

我是对的吗? (lambda总是可以用方法引用替换)

1 个答案:

答案 0 :(得分:10)

方法引用无法捕获变量。因此捕获lambda不能直接转换为方法引用。例如,

int x = 1;
numbers.replaceAll(n -> n + x);

在某些情况下,如果只捕获一个变量,则可以将lambda转换为捕获变量的方法引用。例如,

String greeting = "Hello, ";

people.replaceAll(name -> greeting + name);

可以转换为方法引用

people.replaceAll(greeting::concat);