java - 是否有不能作为方法引用的 lambda 函数

标签 java lambda java-8 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);

关于java - 是否有不能作为方法引用的 lambda 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35443655/

相关文章:

c# - 如何异步设置委托(delegate)类型 UITextField.ShouldReturn?

java - 如何过滤 for 中的列表?

java - 使用 Java 8 5 天编译用 Java 编写的旧程序

Java AWS S3 PutObject 多部分文件

java - 如何使用 Selenium 识别所选项目的 Web 元素,以动态更改名称和 id

java - 我应该将图像存储在内容管理系统的什么位置?

适用于 Mac OS X 的 Java 分析器,支持标记堆

c# - 如何将委托(delegate)存储在列表中

c# - 这个 C# 语法的 VB 等价物是什么,处理委托(delegate)?

javadoc : error - invalid flag: -Xdoclint:none, 当我使用 java 7 时,它在 java 8 中有效