lambda表达式学习

全文约491字 2分钟阅读

实现了函数式接口的匿名类对象

调用方法A需要传几个参数,其中一个参数采用lambda表达式写法 这种写法本质是传入了一个对象,匿名类对象,一个实现了某个函数式接口的,重写了里面的方法的对象,

因为方法A在他的定义里面规定了要传什么类型变量,只不过这个定义有点特殊,参数列表不是某些具体的类,而是一个接口 体会下 A1 和A2的区别

int A1(int a, int b, Student student)

int A2(Function function)

核心思想

可推导可省略

  1. 省略了对象名
    不需要,被对象实际定义所代替
  2. 省略了实现的接口名
    因为方法定义的时候指明了是哪个接口
  3. 省略了重写的方法名
    因为已经知道了要实现的接口是哪个,该接口必定是函数式接口,函数式接口仅有一个方法
  4. 省略了参数类型
    因为方法定义的时候已经写明了
  5. 省略了返回值关键字return
    如果重写的方法需要有返回值的话,并且重写的函数体只有一行, return 关键字可以省略,把重写体计算结果作为返回值, 如果重写体较为复杂需要用{}包裹重写体, 返回值的return关键字不能省略

使用方法与条件

如果要调用的方法,其中一个参数的类型是一个函数式接口类型,在调用的时候就可以用lambda表达式

()->{}

()里面的是函数式接口的参数列表,{}里面的是重写方法的方法体,与方法定义无关