System.out::printlin 可以很好的串联Java8新特性中的Lambda表达式和方法引用
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
//完成对集合元素的遍历输出
list.forEach(System.out::println);
- 首先用Lambda体简化匿名内部类
- 了解函数式接口的概念
- 方法引用的用法
- Consumer<T> 的场景
- 引出函数式编程
- System.out::println
链条式引出结果, 并非完整文档笔记.
从匿名内部类 到 Lambda
Lambda本质就是一种书写方式 , 他的整体就是一个对象
匿名内部类写法
假如要创建接口对象, 一种方式就是写成匿名内部类 ,
这里匿名的说法, 描述的是不必专门写一个类来继承Runnable , 进而去new对象, 再去调用这个类重写的run方法
Runnable runnable = new Runnable() {
@Override
public void run() {
System.out.println("这是runnable");
}
};
Lambda写法
. 匿名内部类这种方式过于复杂, 可以写成Lambda的格式进行优化
Runnable runnable1 = () -> {
System.out.println("这是runnable2");
};
相当于将 new Runnable() 和 除了方法内的代码给省略
( ) 就是run( ) 的参数表, 接口名方法名都省了.
更简化的Lambda
当这个方法体中只有一行代码时, 可以直接省略{}括号
Runnable runnable2 = () -> System.out.println("这是runnable2");
所以Lambda体在Java中是对象
在其它语言中Lambda体或者称之为箭头函数./回调函数, 但在Java中很明显Lambda体是对象, 就是函数式接口的一个对象