JAVA8新特性之方法引用与构造器引用
一:简介
1:什么是方法引用?
若Lambda体中的功能,已经有方法提供了实现,可以使用方法引用。
可以将方法引用理解为Lambda表达式的另一种表现形式。
2:方法引用一般有三种语法格式
⑴实例对象名::实例方法名
⑵类名::静态方法名
⑶类名::实例方法名
(注意:第二和第三个方法引用是有区别的,下面会说。
什么时候使用方法引用呢?
当要传递给Lambda体内的操作,已经有实现的方法了,就可以使用方法引用了
)
3:实例对象名::实例方法名
⑴代码例子
效果:
⑵相关注意点
我们在使用方法引用的时候,我们需要注意的是我们在引用方法的时候,
要保证方法是否存在返回值,返回值类型,以及是否需要传参,和参数类型,
这些都需要和我们使用的函数式接口的返回值类型以及参数类型保持一致才行。
比如我们上面使用的Supplier<T>这个供给型接口。它是无参,返回值类型为T的。
当然上面我们将返回值类型定义为String类型,那么我们就使用实例对象名::方法名。
就是emp::getName,那么这个getName方法的返回值类型,以及参数要和Supplier保持一致,
返回值类型为String,无参。
4:类名::静态方法名
5:类名::实例方法名
效果:
注意:类名::实例方法名和类名::静态方法名的区别就是:
若Lambda 的参数列表的第一个参数,是实例方法的调用者,第二个参数(或无参)是实例方法的参数时,
格式: 类名::实例方法名 。
6:构造器引用
⑴默认无参构造器
效果:
⑵有参的构造器
效果:
7:数组引用
⑴注意:
说明: 这里单独把数组引用拿出来实际上是强调一下,数组引用和构造引用基本相同。
⑵代码示例
效果: