Ste*_*eve 20 java lambda java-8 method-reference
我偶然发现了以下使用方法参考的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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
什么是等效的lambda表达式System.out::println
?
Hol*_*ger 37
首先System.out::println
评估方法引用System.out
,然后创建一个捕获评估值的lambda表达式的等价物.通常,您将使用o->System.out.println(o)
与方法引用相同的方法,但System.out
每次调用方法时,此lambda表达式都将进行评估.
所以完全相同的是:
PrintStream p = Objects.requireNonNull(System.out);
numbers.forEach(o -> p.println(o));
Run Code Online (Sandbox Code Playgroud)
如果有人System.setOut(…);
在中间调用,那将会产生影响.
它的 :
numbers.forEach(i -> {System.out.println(i);});
Run Code Online (Sandbox Code Playgroud)
甚至更简单:
numbers.forEach(i -> System.out.println(i));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13343 次 |
最近记录: |