Java8——方法引用
方法引用就是通过类名或方法名引用已经存在的方法来简化lambda表达式。那么什么时候需要用方法引用呢?如果lamdba体中的内容已经有方法实现了,我们就可以使用方法引用。
一、方法引用的三种语法格式
1. 对象::实例方法名
lamdba写法:
方法引用写法:
consumer接口:
注意:被调用的方法的参数列表和返回值类型需要与函数式接口中抽象方法的参数列表和返回值类型要一致。
2. 类::静态方法名
lamdba写法:
方法引用写法:
Comparator接口:
Integer类部分内容:
注意:被调用的方法的参数列表和返回值类型需要与函数式接口中抽象方法的参数列表和返回值类型要一致。
3. 类::实例方法名
lamdba写法:
方法引用写法:
BiPredicate接口:
注意:第一个参数是这个实例方法的调用者,第二个参数是这个实例方法的参数时,就可以使用这种语法。
二、构造器引用
类::new
lamdba写法:
构造器引用写法:
Supplier接口:
Person类:
注意:person类中有两个构造器,要调用哪个构造器是函数式接口决定的,也就是Supplier接口中的get()方法是无参的,那么就调用的是person中的无参构造器。
三、数组引用
Type::new
lamdba写法:
数组引用写法:
Function接口部分内容:
四、总结
方法应用及构造器引用其实可以理解为lamdba的另一种表现形式
方法引用被调用的方法的参数列表和返回值类型需要与函数式接口中抽象方法的参数列表和返回值类型要一致
方法引用中使用类::实例方法的条件是第一个参数是这个实例方法的调用者,第二个参数是这个实例方法的参数
构造器引用需要调用的构造器的参数列表要与函数式接口中抽象方法的参数列表一致
版权声明: 本文为 InfoQ 作者【Java旅途】的原创文章。
原文链接:【http://xie.infoq.cn/article/97f86269257fd35506bb41d76】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论