探索 System.out::println 的等效 Lambda 表达式
在 Java 编程中,方法引用提供了调用方法的简洁语法。其中一个例子是 System.out::println,它作为引用 System.out 类的 println 方法的快捷方式。
此方法引用允许我们编写如下代码:
numbers.forEach(System.out::println);
其中数字列表包含打印到控制台的整数。然而,有一个相应的 lambda 表达式可以实现相同的功能。
要找到这个 lambda 表达式,我们需要了解方法引用的工作原理。当使用 System.out::println 时,System.out 的初始计算会生成一个 PrintStream 实例,该实例存储在 lambda 表达式中并用于调用 println。
直接将此概念翻译为 lambda 表达式,我们得到以下内容:
numbers.forEach(o -> { PrintStream p = Objects.requireNonNull(System.out); p.println(o); });
此 lambda 表达式显式检索 PrintStream 实例并将其分配给变量 p。占位符 o 代表数字列表中的每个元素。
值得注意的是,这个 lambda 表达式与 System.out::println 完全相同,捕获计算的 System.out 实例。然而,后一种方法引用的优点是更加简洁和可读。
因此,虽然 lambda 表达式提供了更明确的视图来了解底层发生的情况,但方法引用 System.out::println 仍然存在在上述示例的场景中,这是一种有价值的语法快捷方式。
以上是Java 中 `System.out::println` 的等效 lambda 表达式是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!