image.png
image.png

总结:

1、
左边:Lambda形参列表的参数类型可以省略(类型推断:如果Lambda形参列表只一个参数,其一对()也可以
省略
右边::Lambda体应该使用一对{} 包裹;如果Lambda体只一条执行语句(可能是return语句,省略这一对 {} 和
return 关键字
#2、当需要对一个函数式接口实例化的时候,就可以使用lambda表达式
用匿名实现类表示对都可以用lambda表达式来写

函数式接口:

如果一个接口中,只声明了一个抽象方法,则此接口就称之为函数式接口、可以添加注解@FunctionalInterface(检查是否是函数式接口)

  • Lambda表达式本质:作为函数式接口的实例

内置核心函数式接口

image.png

其他接口

image.png

方法引用

使用情境:当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用

方法引用:本质上就是Lambda表达式,而Lambda表达式作为函数式接口的实例。所以方法引用,也是函数式接口的实例。

使用格式:类(或对象)::方法名
使用情况:

  • 情况1—对象::非静态方法
  • 情况2—类::静态方法
  • 情况3—类::非静态方法

要求:接口中的抽象方法的形参列表和返回值类型与方法引用的方法的形参列表和返回值类型相同!(针对于情况1和情况2)
当函数式接口方法的第一个参数是需要引用方法的调用者,并且第二个参数是需要引用方法的参数(或无参数)时ClassName::methodName。(情况3)

构造方法引用

和方法引用类似,函数式接口的抽象方法的形参列表和构造器的形参列表一致,抽象方法的返回值类型即为构造器所属类型

数组引用

type::new