Day25
一、Lambda表达式
1、是对匿名内部类对象的一种简化写法
2、java8中引入了一个新的操作符”->”,叫做箭头操作符,Lambda操作符
3、箭头操作符,将表达式分隔成两部分
4、左边:表示的Lambda表达式的参数列表
5、右边:表示的是方法的方法体,Lambda体
6、语法格式1:没有参数,也没有返回值
() -> System.out.println(“Hello Lambda”);
7、语法格式2:有一个参数,没有返回值
(x)->System.out.println(x);
说明:如果只有一个参数,那么前面的小括号可以不写
x -> System.out.println(x);
8、语法格式3:有两个参数,没有返回值
(x, y) -> System.out.println(x + “…” + y);
9、语法格式4:lambda体有多句,需要在多句话外面加上大括号
x -> {
System.out.println(x);
System.out.println(x + “...”);
}
10、语法格式5:如果Lambda体只有一句,那么大括号和return关键字都可以省略:x -> x * x;
11、注意事项:
- 使用lambda表达式的前提条件:接口中只有一个抽象方法
- 如果在一个接口中只有一个抽象,称这种接口为:函数式接口
- 使用注解:@FunctionalInterface,检查当前接口是否是函数式接口。
二、函数式接口概述
1、lambda表达式使用的前提,就是接口必须是一个函数式接口。
2、函数式接口:在接口中,如果只有一个方法,那么这种接口就是函数式接口
3、用注解来检查当前的接口是否是函数式接口:@FunctionalInterface如果不是函数式接口,就编译报错
4、作用:
- 想表达的是一个方法的内容,需要把这个方法传递到其他需要这个方法的位置
- Java中不能将方法当做一个数据,不能作为方法的参数进行传递,也不能作为对象的成员变量存在。
- 只能在方法外加一层接口的声明
5、常用内置函数式接口
1、Consumer :消费型接口,void accept(T t);
2、Supplier :供给型接口,T get();
1、Function<T, R>:函数型接口,R Apply(T t);
2、Predicate:断言型接口,boolean test(T t);