目录
Lambda表达式:
一.表达式的格式:
1.无参,无返回值
()->System.out.println();
2.有一个参数,无返回值
(x)->System.out.println("x");
3.只有一个参数,小括号可以不写
x->System.out.println("x");
4.有两个以上的参数,有返回值,并且lambda体中有多条语句
Comparator<Integer> com=(x,y)->{
System.out.println("函数接口");
return Integer.compare(x,y);
};
5.若lambda体中只有一条语句,大括号可以省略不写
Comparator<Integer> com=(x,y)->Integer.compare(x,y);
6.类型推断,lambda表达式中参数的数据类型可以不写,Jvm可以根据上下文推断
二.Lambda表达式需要“函数式接口”的支持
函数式接口:接口中只有一个抽象方法的接口,称之为函数式接口。可以使用注解@FunctionalInterface修饰(检查是否是函数式接口)
Java内置的四大核心函数式接口:
1.Consumer<T> : 消费型接口
void accept(T t);
2.Supplier<T> : 供给型接口
T get();
3.Function<T> : 函数型接口
R apply(T t);
4.Predicate<T> : 断言型接口
boolean test(T t);
方法引用:
若Lambda体中内容已经有方法实现了,我们可以使用“方法引用”
(调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致)
主要有三种语法格式:
对象 :: 实例方法
类 :: 静态方法名
类 :: 实例方法名
例:
对象 :: 实例方法:
Employee emp = new Employee();
Supplier<String> sup = emp::getAge;
Integer num = sup2.get();
System.out.println(num);
类 :: 静态方法名:
Comparator<Integer> com = (x , y) -> Integer.compare(x, y);
Co