1、接口中默认方法修饰为普通方法
在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,由于这些修饰符都是默认的。
接口定义方法: public抽象方法需要子类实现
接口定义变量: public、static、final
在JDK 1.8开始支持使用static和default修饰可以写方法体。static和default方法可以定义多个。
- 实现类可以重写default方法,不可以重写static方法
- static方法的调用必须使用[接口对象名.]调用
1.2、代码案例
2、Lambda表达式
2.1、什么是Lambda表达式
Java中使用Lambda表达式的规范,必须是为函数接口
函数接口的定义:在该接口中只能存在一个抽象方法,该接口称作为函数接口
Java中的Lambda表达式的规范,必须是为函数接口。
函数接口的定义:在该接口中只能存在一个抽象方法,该接口称作为函数接口
2.2、Lambda表达式的规范
使用Lambda表达式依赖于函数接口
- 1.在接口中只能够允许有一个抽象方法
- 2.在函数接口中定义 object类中方法
- 3.使用默认或者静态方法
- 4.@FunctionalInterface表示该接口为函数接口
3、Stream流
3.1、sorted排序
3.2、reduce并行计算
3.3、Max、Min取最大、最小
3.4、anyMatch判断集合是否含有某个元素
3.5、allMatch判断集合某个元素全部匹配
3.6、filter过滤
3.7、skip+limit实现分页
4、方法引入
方法引入需要结合 lambda表达式能够让代码变得更加精简。
- 静态方法引入 类名::(静态)方法名称
- 对象方法引入 类名::实例方法名称
- 实例方法引入 new对象 对象实例::方法引入
- 构造函数引入 类名::new
需要遵循一个规范:
方法引入方法参数列表、返回类型与函数接口参数列表与返回类型必须要保持一致。|
4.1、静态方法引入
4.2、实例方法引入
4.3、构造方法引入
5、Optional
- Optional类是一个可以为null的容器对象。如果值存在则 isPresent()方法会返回true,调用get(方法会返回该对象。
- Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。
- Optional类的引入很好的解决空指针异常。
5.1、ofNullable,Of,isPresent判断参数是否为空
- ofNullable(可以传递一个空对象)
- Of(不可以传递空对象)
5.2、get()获取元素
5.3、orElse为空值设置默认值
5.4、配合filter()使用
5.5、ifPresent值不为空则执行
5.6、orElseGet