lambda 表达式 λ
- 属于匿名函数代码,使用箭头操作符
->
左边是参数列表,右边是方法体(参数类型 参数,···) -> {代码块}
即使没有参数,也要提供空括号,就像是无参方法一样。 - lambda表达式是一个可传递的代码块也被称为闭包,可以在之后一次或者多次执行。函数可以作为参数进行传递。
- lambda的返回类型并不需要定义,它本身会根据上下文推导得出。
使用lambda表达式的重点是延迟执行,例如:
- 在一个单独的线程中执行
- 多次运行代码
- 在适当的位置或发生某种情况下执行代码
- 在必要时运行代码
函数式接口
一个接口中只声明了一个抽象方法,则此接口称为函数式接口,当需要这种接口的对象时,可以用lambda来提供,Java中lambda作为函数式接口实例(本质是个对象),没有接口就没有意义。
方法引用 ::
本质还是Lambda表达式,方法引用也不是一个对象,但是在为一个类型为函数式接口的变量赋值时会生成一个对象。
这是一个方法引用,指示编译器生成一个函数式接口的实例,覆盖接口中的抽象方法来调用给定的方法。
System.out::println