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 一样使用,比如如:
Listnumbers = 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中文网其他相关文章!