lambda表达式:
方法引用分类 | 类名::方法 | |
---|---|---|
类名::staticMethod | (args)->类名.staticMethod(args) | 静态方法 |
inst::instMethod | (args)->inst.instMethod(args) | 实例方法 |
类名::instMethod | (inst,args)->inst.instMethod(args) | 对象方法 |
类名::new | (args)->new 类名(args) | 构建方法 |
lambda常用接口 | 接口名<参数类型,可多个参数> |
---|---|
Consunmer: | 带参无返回值; |
.accept(s); | 传入参数 |
Supplier: | 无参有返回值; |
.get(); | 获取返回值 |
Function: | 带参带返回值 |
.apply(s) | 传入参数并获取返回值 |
BiFunction: | 带双参带返回值 |
Preadicated: | 带参带boolean类型返回值 |
.test(s) | 传入参数并获取boolean返回值 |
Comparator: | 带双参并返回boolean类型 |
lambda表达式可以将方法当作参数进行传递;
只有接口的传参位置才可以使用箭头函数简化;
如果方法只有一行可省略{};
如果接口传参只有一个可省略();
如果lambda表达式调用其他方法可使用::
其可以根据当前接口的有参无参自动注入方法中;
//例如: public static void test(Consumer<String> consumer,String s) //调用静态test方法时,参数consumer的位置可以使用()->{}(箭头函数)代替 //s为传入参数,而箭头后为该函数执行的方法; test(s -> System.out.println(s+"ooo"),"hahaha"); //如果方法不只有一行使用{}; test(s->{ s="hhh"; System.out.println(s+"ooo") },"hahaha") //如果参数不只有一行使用(); test((s,a)->{ s="hhh