实现了函数式接口的匿名类对象
调用方法A需要传几个参数,其中一个参数采用lambda表达式写法 这种写法本质是传入了一个对象,匿名类对象,一个实现了某个函数式接口的,重写了里面的方法的对象,
因为方法A在他的定义里面规定了要传什么类型变量,只不过这个定义有点特殊,参数列表不是某些具体的类,而是一个接口 体会下 A1 和A2的区别
int A1(int a, int b, Student student)
int A2(Function function)
核心思想
可推导可省略
- 省略了对象名
不需要,被对象实际定义所代替 - 省略了实现的接口名
因为方法定义的时候指明了是哪个接口 - 省略了重写的方法名
因为已经知道了要实现的接口是哪个,该接口必定是函数式接口,函数式接口仅有一个方法 - 省略了参数类型
因为方法定义的时候已经写明了 - 省略了返回值关键字return
如果重写的方法需要有返回值的话,并且重写的函数体只有一行, return 关键字可以省略,把重写体计算结果作为返回值, 如果重写体较为复杂需要用{}包裹重写体, 返回值的return关键字不能省略
使用方法与条件
如果要调用的方法,其中一个参数的类型是一个函数式接口类型,在调用的时候就可以用lambda表达式
()->{}
()里面的是函数式接口的参数列表,{}里面的是重写方法的方法体,与方法定义无关