文章目录

  • 1. 引言
  • 2. 第一个Lambda表达式
  • 2.1 如何辨别Lambda表达式
  • 2.2 闭包
  • 2.3 函数接口
  • 3. 总结


Lambda表达式和闭包你真的理解Lambda表达式和闭包嘛什么是JavaScript闭包

public void methodA(..){
    //既成事实的final变量
    String name = "little motor"; 

    //Lambda表达式中的自由符号name此时有值"little motor",
    //它将一个开放的、仍然包含一些未定义的符号lambda表达式变为一个关闭的lambda表达式,
    //使这个lambda表达式不再具有任何自由符号,即闭包。 
    button.addActionListener(event -> System.out.println("hi" + name));  
}

2.3 函数接口

函数接口是只有一个抽象方法的接口,用作Lambda表达式的类型,方法的签名并不重要,只要方法签名和Lambda表达式的类型匹配即可,但是建议为参数起一个有意义的名字。下面是一些重要的函数接口

接口

参数

返回类型

示例

Predicate<T> (断言)

T

boolean

这张唱片已经发行了吗

Consumer<T>(消费者)

T

void

输出一个值

Function<T,R>

T

R

获取Artist对象的名字

Supplier<T>(生产者)

None

T

工厂方法

UnaryOperator<T>(一元操作)

T

T

逻辑非(!)

BinaryOperator<T>

(T,T)

T

两个数的乘积

3. 总结

  • Lambda表达式是一种匿名方法,将行为像数据一样进行传递。
  • Lambda表达式常见结构:BinaryOperator add = (x, y) -> x + y;
  • 函数接口指具有单个抽象方法的接口,用来表示Lambda表达式的类型。