lambda表达式
1.函数式编程
2.参数类型自动推断
3.代码量少,简洁,更容易并行
如果要学好这个表达式
1.学好表达式要熟悉泛型
2.多用多练stream API
使用场景
任何有函数式接口的地方都能用表达式
函数式接口
定义:只有一个抽象方法的接口(不管这个接口中有多少个方法,但有且只有一个抽象方法就是函数式接口);静态的(static)和 默认的(default)都不是函数式接口
public interface A { //这个就是函数式接口
default int save() {
return 1;
}
static int update() {
return 1;
}
int delete() {
return 1;
}
}
java8常用的函数式接口
- supplier代表一个输出
- consumer代表一个输入
- biconsumer 代表两个输入
- function 代表一个输入一个输出
- bifunction 代表两个输入一个输出
- unaryOperator代表相同类型的一个输入一个输出
- binaryOperator代表相同类型的两个输入一个输出
lambda表达式语法
首先lambda表达式是一个对象,是函数式接口的实例。
其次语法结构为:左边参数—>右边表达式(body体)
(object…args)——>{多行用大括号}/单行可以不用
结构:
1.()—>{}五参数 无返回值
2.()—>{return 100;}五参数有返回值
3.()—>100 wu参数有返回值。上面的简写
4.(int x)—>{return x+1;}有参数又返回值
5.(int x)—>x+1 上面的简写
注意 :lambda表达式不需要也不允许抛出throws
interface UserMapper{
void insert(User user) {
system.out.println("insert user"+user)
}
}
class User {
}
//1正常写法
UserMapper um = new UserMapper() {
public void insert(User user) {
system.out.println("insert user"+user);
}
}
//2.表达式写法
UserMapper um = (user)——>{system.out.println("insert user"+user)};
| |
~ ~
参数 函数体