首页  >  文章  >  Java  >  相当于 System.out::println 方法引用的 lambda 表达式是什么?

相当于 System.out::println 方法引用的 lambda 表达式是什么?

Linda Hamilton
Linda Hamilton原创
2024-11-04 06:26:02842浏览

What is the lambda expression equivalent to the System.out::println method reference?

Lambda 表达式中 System.out::println 方法引用的等价

在 Java 中,System.out::println 方法引用允许有关引用 System.out.println() 方法的简洁方法。它计算 System.out 并将其分配给一个变量。

问题:

提供相同行为的 System.out::println 对应的 lambda 表达式是什么?

答案:

完全等价lambda 表达式将为:

num -> {
    PrintStream p = Objects.requireNonNull(System.out);
    p.println(num);
}

此 lambda 表达式在执行 println 方法之前捕获变量 p 中对 System.out 的引用。这可以防止对 System.out 的任何更改影响 lambda 表达式的行为。

与简单 Lambda 表达式的区别:

更简单的 lambda 表达式,如 num -> System.out.println(num) 每次调用时都会评估 System.out,使其在执行 lambda 时容易受到 System.out 中的更改的影响。

用法:

等效的 lambda 表达式可以像 System.out::println 一样使用,比如如:

List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
numbers.forEach(num -> {
    PrintStream p = Objects.requireNonNull(System.out);
    p.println(num);
});

此代码会将列表中的数字打印到控制台。

以上是相当于 System.out::println 方法引用的 lambda 表达式是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn