一、方法引用和构造器引用的用途:
Lambda 表达式是可以简化函数式接口的变量或形参赋值的语法。而方法引用和构造器引用是为了简化 Lambda 表达式的。
二、方法引用
1、定义:方法引用可以看做是 Lambda 表达式深层次的表达。换句话说,方法引用就是Lambda 表达式,也就是函数式接口的一个实例,通过方法的名字来指向一个
方法,可以认为是 Lambda 表达式的一个语法糖。
2、语法糖:语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中
添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。理解:
往计算机语言语法中加糖,称为语法糖。
3、格式:类或对象::方法名
格式说明:“::”两个冒号中间不能有空格
4、主要使用情况:
情况一:对象::实例方法名
情况二:类::静态方法名
情况三:类::实例方法名
5、方法使用前提:
(1)lambda体只有一句语句,并且是通过调用一个对象/类的现有的方法来完成的。
案例:()->System.out.println();println()是现有的实例方法,System.out被看成了一个对象
(2)针对情况一:函数式接口中的抽象方法 a 在被重写时使用了某一个对象的方法b。如果方法 a 的形参列表、返回值类型与方法 b 的形参列表、返回值类型都
相同,则我们可以使用方法 b 实现对方法 a 的重写、替换。
(3)针对情况二:函数式接口中的抽象方法 a 在被重写时使用了某一个类的静态方法 b。如果方法 a 的形参列表、返回值类型与方法 b 的形参列表、返回值类型
都相同,则我们可以使用方法 b 实现对方法 a 的重写、替换。
(4)针对情况三:函数式接口中的抽象方法 a 在被重写时使用了某一个对象的方法b。如果方法 a 的返回值类型与方法 b 的返回值类型相同,同时方法 a 的形参
列表中有 n 个参数,方法 b 的形参列表有 n-1 个参数,且方法 a 的第 1 个参数作为方法 b 的调用者,且方法 a 的后 n-1 参数与方法 b 的 n-1 参
数匹配(类型相同或满足多态场景也可以)。
6、举例:
列表中有 n 个参数,方法 b 的形参列表有 n-1 个参数,且方法 a 的第 1 个参数作为方法 b 的调用者,且方法 a 的后 n-1 参数与方法 b 的 n-1 参。7、说明:方法引用本质是对lambda表达式的简化,当我们拿到一个函数式接口时要马上想到他的抽象方法和我们要重写的方法是否符合方法引用三中情况,如果符合。1、用途:当 Lambda 表达式是创建一个对象,并且满足 Lambda 表达式形参正好是给创建这个对象的构造器的实参列表,就可以使用构造器引用。往计算机语言语法中加糖,称为语法糖。