方法引用:就是对lambda表达式中代码冗余现象的优化,优化lambda表达式
1.概念
在我们是哦用lambda表达式的时候其实传递的是一段解决问题的代码,给声明参数,做什么操作
2.lambda代码冗余现象
比如像打印一个内容:
1.先准备一个函数式接口,内含一个抽象方法
2.准备一个实现类,实现类里面有明确的操作方法,方法参数是之前定义的函数格式接口,函数式接口定义唯一一个抽象方法
3.格式:实现类里面的方法:(类对象::对象里面的方法)
3.方法引用符号
双冒号---->::---->写法称之为【方法引用】
方法引用使用场景
1.通过对象名的引用成员方法
- 准备一个方法类
- 准备一个函数式接口
- 准备一个测试类
1的代码演示
2.通过静态方法获取
- 定义一个函数式接口
- 静态方法,传入的参数是函数式接口
- 使用方法引用优化lambda表达式
2的代码演示
注意:
使用lambda表达式写法:d-->Math.abs(d)
使用方法引用写法:Math::abs
两者效果是一样的
3.通过super来引用成员方法
如果在存在继承关系,当lambda表达式需要使用super调用的时候也可以使用方法引用来优化lambda
其实本质就是谈过对象来调用
3的代码演示
4.通过this来的调用用
this指代当前对象,如果需要引用的方法是本类当中的成员方法,那么就不用new对象,直接使用【this::成员方法】
代码演示
5.类的构造器引用
由于构造器得名称和类名称一样,所以构造器得应用使用【类名称】
5的代码演示
6.数组的引用优化
为什么使用优化
如果使用lambda表达式根据【可推到可省略就可以省略的状态】。也无需指定重写的形式。------>他们都可以被推导出来,能够使用方法引用,同样也是可以更具傻瓜下文推导出来。
函数时接口时lambda得基础,而方法引用时lambda表达式得优化,所以函数时接口必须存在