Home >Java >javaTutorial >What is the equivalent lambda expression for `System.out::println` in Java?
Exploring the Equivalent Lambda Expression for System.out::println
In Java programming, method references offer a concise syntax to invoke methods. One such example is System.out::println, which serves as a shortcut for referring to the println method of the System.out class.
This method reference allows us to write code like this:
numbers.forEach(System.out::println);
where the numbers list contains integers that are printed to the console. However, there is a corresponding lambda expression that achieves the same functionality.
To find this lambda expression, we need to understand how method references work. When using System.out::println, the initial evaluation of System.out yields an instance of PrintStream, which is stored in a lambda expression and used to invoke println.
Directly translating this concept into a lambda expression, we get the following:
numbers.forEach(o -> { PrintStream p = Objects.requireNonNull(System.out); p.println(o); });
This lambda expression explicitly retrieves the PrintStream instance and assigns it to the variable p. The placeholder o represents each element of the numbers list.
It's worth noting that this lambda expression is an exact equivalent of System.out::println, capturing the evaluated System.out instance. However, the latter method reference has the advantage of being more concise and readable.
So, while the lambda expression provides a more explicit view of what happens under the hood, the method reference System.out::println remains a valuable syntactic shortcut in scenarios like the one exemplified above.
The above is the detailed content of What is the equivalent lambda expression for `System.out::println` in Java?. For more information, please follow other related articles on the PHP Chinese website!