Lambda 表达式的语法结构
Java 中的 Lambda 表达式的基本结构如下:
(参数列表) -> { 方法体 }
✅ 语法形式举例(从简单到复杂)
形式 | 示例 | 说明 |
---|---|---|
无参数 | () -> System.out.println("Hi") | 没有参数,执行一个语句 |
一个参数 | x -> x * x | 一个参数可以省略括号 |
多个参数 | (a, b) -> a + b | 多个参数要加括号 |
有方法体 | (a, b) -> { int c = a + b; return c; } | 多条语句时需要大括号和 return |
🔍 分解示例
示例 1:list.forEach(s -> System.out.println(s));
解析:
-
参数:
s
-
方法体:
System.out.println(s)
-
等价于实现
Consumer<T>
接口中的accept(T t)
方法。
相当于写了:
list.forEach(new Consumer<String>() {public void accept(String s) {System.out.println(s);}
});
示例 2:
(x, y) -> x + y
解析:
-
参数列表是两个:
x
,y
-
方法体是一个表达式:
x + y
-
用于实现
BiFunction<Integer, Integer, Integer>
接口中的apply(x, y)
方法。
示例 3:
() -> 42
解析:
-
无参数
-
返回值为
42
-
实现的是
Supplier<Integer>
接口中的get()
方法
🧠 Lambda 与函数式接口的关系
Lambda 表达式必须用于函数式接口的上下文中(即接口中只允许一个抽象方法)。
@FunctionalInterface
interface MyFunction {int operate(int a, int b);
}
然后我们就可以这样写:
MyFunction add = (a, b) -> a + b;
System.out.println(add.operate(3, 5)); // 输出