一、Lambda表达式
定义: Lambda表达式就是缩写匿名内部类,允许把一个函数作为方法的参数进行传递,Lambda表达式使代码变得更 加简洁和紧凑。
基本语法:<函数式接口> <变量名> = (参数1,参数2......)-> { 方法体 }
实例1:
实例2:
使用Lambda表达式有什么作用?
个人理解:有类似于方法重载的作用。实现代码的复用性
使用Lambda表达式之后:
调用方法:
使用Lambda表达式注意事项:
1、-> 操作符 将表达式分成了两部分;
左侧 :(参数1,参数2......)参数列表,当只有一个参数的时候,括号可以省略;
右侧: {}内部是方法体;如果执行语句只有一条,没有返回值,{}可以省略,如果有返回值,也可以不 写{} 但return也必须省略。
2、形参的数据类型会自动推断,不用写;
3、Lambda不会自动生成单独的内部类文件。
4、Lambda若访问局部变量,则局部变量一定是final修饰的,如果不是,系统会自动添加,但不能修改,否则 编译报错
函数式接口:
定义:一个接口只有一个抽象方法。
为了确保你的接口一定达到这个要求,你只需要给你的接口添加 @FunctionalInterface 注解,编译器如果发 现你标注了这个注解的接口有多于一个抽象方法的时候会报错的。
四个核心式函数接口:
函数式接口 | 参数类型 | 返回类型 | 说明 |
---|---|---|---|
Consumer<T> 消费型接口 | T | void | void accept(T t);对类型为T的对象应用操作 |
Supplier<T> 供给型接口 | 无 | T | T get(); 返回类型为T的对象 |
Function<T,R> 函数型接口 | T | R | R apply(T t);对类型为T的对象应用操作,并返回类型为R类型的对象。 |
Predicate<T> 断言型接口 | T | boolean | boolean test(T t);确定类型为T的对象是否满足条件,并返回boolean类型。 |