在我在公司的一次讲座中,我建议将任何复杂的lambda表达式转换为方法引用(更易读、更易于调试和测试),并被问及是否总是可行。
我搜索了一下,但没有找到不能用方法引用替换的lambda表达式。
我的观点正确吗?(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);
int x = 1; numberList.replaceAll(n -> n + x);
这段代码意思是将列表中的所有数字加上1。此外,您的代码无法编译。您不能将方法引用作为参数传递给S.o.println
。 - Misha