方法引用与 Lambda 表达式:探索 System.out::println 的等效性
使用 System.out 等方法引用时::println,该函数首先计算 System.out 并捕获 lambda 表达式中的结果值。例如,此方法引用的 lambda 等效项为:
1 |
|
此 lambda 表达式的行为与以下代码类似:
1 2 3 4 5 6 |
|
但是,方法引用 System.out: :println 比 lambda 表达式有一个优势,因为它总是在编译时计算 System.out。对于 lambda 表达式,每次调用方法时都会计算 System.out。
为了确保与方法引用完全等效,必须使用以下代码:
1 2 |
|
这里,printStream 是一个捕获 System.out 值的变量,保证 System.out 的任何后续更改都不会影响该消费者。
以上是方法引用何时不等于 Lambda 表达式?的详细内容。更多信息请关注PHP中文网其他相关文章!