java8新特性

78 阅读2分钟

一.接口中默认方法修饰为普通方法

二.lambda表达式

1.为什么用

简化匿名内部类的使用

2.怎么用

三.函数式接口

四.方法引用

方法引入规则:方法的引用就是对lambda表达式中引用的方法,所以引用的方法的参数列表和返回值类型必须要和函数接口的参数列表,返回值类型保持一致

1.静态方法引用

<1>编写自定义函数式接口

image.png

<2>测试

I.原生方式与lambda方式

image.png

II.方法引入结合lambda和函数式接口实现

image.png

III.参数列表/返回值类型不一致的报错以及解决

i.报错

image.png

ii.解决

image.png

image.png

2.对象方法引用

<1>函数式接口

image.png

<2>测试

I.使用匿名内部类的方式

image.png

II.lambda表达式写法

image.png

III.方法引用

image.png

3.实例方法引用

<1>编写函数式接口

image.png

<2>测试

I.使用lambda表达式

image.png

II.实例方法引用

image.png

4.构造函数引用

<1>编写函数式接口与实体类

image.png

image.png

<2>测试

I.lambda表达式写法

image.png

II.方法引用结合lambda

image.png

五.stream接口

六.Optional类

1.是什么

2.为什么用

之前判断一个对象包括对象的值或者判断一个值是否为空,需要自己写if判断,所以lambda表达式结合函数式编程结合Optional就可以在一行代码内实现判断对象是否为空

3.怎么用(API使用)

<1>判断对象是否为空

image.png

<2>参数过滤与设定默认值

I.默认值设置

image.png

II.参数过滤

image.png

<3>真实案例代码优化

I.判断一个值是否为空

i.功能实现

image.png

ii.代码优化

image.png

iii.使用lambda继续优化

image.png

iv.使用方法引用继续优化

image.png

II.

i.优化前

image.png

ii.优化后

image.png

iii.继续优化

image.png