一、Lambda表达式
简化方式:
1.当方法体只有一条时可以省略方法体的花括号省略。
2.可以省略参数类型。
3.当参数列表中只有一个参数时可以省略参数列表的括号。
4.只有返回语句,可以省略return。
二、函数式接口
(1)函数式接口:接口中只能有一个抽象方法,其他的可以有default、static、Object里继承的方法等。
(2)常见内置的函数式接口:
-
Consumer<T>:消费型接口(void accept(T t))。有参数,无返回值
-
Supplier<T>:供给型接口(T get())。只有返回值,没有入参
-
Function<T, R>:函数型接口(R apply(T t))。一个输入参数,一个输出参数,两种类型不可不同、可以一致
-
Predicate<T>:断言型接口(boolean test(T t))。输入一个参数,输出一个boolean类型得返回值
三、方法引用
使用条件:
1.Lambda方法体中只有一个方法的调用。
2.接口中的方法返回值和Lambda方法体中调用的方法返回值一致,或者接口的返回值是引用的方法的返回值的父类。
3.接口中的方法有返回值引用的方法必须有返回值,接口中的方法没有返回值引用的方法可以有返回值也可以没有返回值。
4.接口中的方法参数和Lambda方法体中调用的方法的方法参数一致,或者接口中的方法参数是Lambda方法体中调用的方法的方法参数的子类。
使用方式:引用操作符是双冒号 "::"。
-
对象引用::实例方法名
-
类名::静态方法名
-
类名::实例方法名
-
类名::new (也称为构造方法引用)
-
类型[]::new (也称为数组引用)