我偶然发现了以下 Java 代码,它使用了 System.out.println
的方法引用:
class SomeClass {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8,9);
numbers.forEach(System.out::println);
}
}
}
System.out::println
的等效 lambda 表达式是什么?
最佳答案
方法引用 System.out::println
将首先评估 System.out
,然后创建一个 lambda 表达式的等价物,捕获评估值。通常,您会使用o -> System.out.println(o)
来实现与方法引用相同的效果,但此 lambda 表达式将评估 System.out
每次都会调用该方法。
所以一个确切的等价物是:
PrintStream p = Objects.requireNonNull(System.out);
numbers.forEach(o -> p.println(o));
如果有人在中间调用 System.setOut(...);
,这将产生影响。
关于java - System.out::println 的等效 lambda 表达式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28023364/