Lambda表达式

Lambda 表达式的基本语法格式如下:

1(参数列表) -> { 方法体 }

它由三部分组成:

  1. (参数列表):对应接口中抽象方法的参数。
    • 类型通常可以省略(Java 编译器会自动推断)。
    • 如果只有一个参数,括号也可以省略。
  2. ->:箭头符号,这是 Lambda 的标志,读作“goes to”或“变成”。
  3. { 方法体 }:具体的代码逻辑。
    • 如果只有一行代码,大括号 {} 和 return 关键字(如果是返回值)通常可以省略。
常见写法示例

假设我们要实现一个数学运算接口 MathOperation,它有一个方法 int operate(int a, int b)

表格

场景Lambda 写法说明
标准写法(a, b) -> { return a + b; }完整形式,有大括号和 return
省略大括号(a, b) -> a + b只有一行代码时,自动作为返回值
省略类型(int a, int b) -> a + b通常不需要写类型,编译器能猜出来
单参数a -> a * a只有一个参数时,括号可省略
无参数() -> System.out.println("Hi")没有参数,括号不能省

底层原理:函数式接口

Lambda 表达式不能凭空存在,它必须依附于一个接口。但这个接口有特殊要求:

必须只有一个抽象方法。

这种接口被称为函数式接口

  • 例子
    • Runnable 接口(只有 run() 方法)
    • Comparator 接口(主要用 compare() 方法)
    • Callable 接口(只有 call() 方法)

当你写 (a, b) -> a + b 时,Java 编译器会根据上下文(比如你把它赋值给了 MathOperation 变量),自动把它转换成实现了 MathOperation 接口的对象。

1new Thread(() -> printer.print("A", 0)).start();
  1. new Thread(...):构造函数需要一个 Runnable 类型的参数。
  2. Runnable:这是一个函数式接口,它只有一个方法 void run(),且没有参数。
  3. () -> ...
    • ():对应 run() 方法的空参数列表。
    • ->:箭头。
    • printer.print("A", 0):这是 run() 方法的具体实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值