Lambda表达式核心是“参数→行为”映射,由箭头操作符“->”分隔参数列表与函数体,左侧可省类型及单参括号,右侧单表达式自动返回、多语句需{}和return。

Java 中的 Lambda 表达式使用 ->(箭头操作符)连接参数列表和函数体,这是 Lambda 的语法核心,表示“参数映射到执行逻辑”。
箭头操作符的基本结构
箭头操作符左侧是参数列表,右侧是函数体,格式为:
(参数) -> { 函数体 } 或 (参数) -> 表达式
- 参数可以省略类型(由编译器根据函数式接口推断),例如
(a, b) -> a + b - 单个参数时括号可省,如
s -> s.length();多个或无参必须加括号,如() -> "hello"或(x, y) -> x * y - 函数体若为单条表达式,可省略花括号和
return;若含多语句或需显式返回,则必须用{}和return
常见写法对比(带箭头操作符)
以下都是合法 Lambda,重点看 -> 如何分隔参数与实现:
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
-
Runnable r = () -> System.out.println("Hi");(无参,单语句) -
Comparator<string> c = (s1, s2) -> s1.length() - s2.length();</string>(双参,返回表达式) -
Function<integer string> f = x -> { return "num: " + x; };</integer>(单参,多语句需大括号+return) -
Predicate<string> p = s -> !s.isEmpty();</string>(单参单表达式,括号省略)
为什么必须用 -> 而不是 = 或 =>
Java 选择 -> 是为了明确语义:它不是赋值(=),也不是“定义为”(=>),而是强调“从参数转换/映射到结果”的函数式意图。该符号与函数式接口的抽象方法签名形成契约——编译器靠它匹配参数个数、类型和返回值。
立即学习“Java免费学习笔记(深入)”;
容易出错的情况
- 漏写箭头:
(a,b) a+b❌ 编译失败,必须有-> - 参数类型手动写错又不匹配接口:
(String a, int b) -> a + b可能导致类型推断失败 - 函数体是语句但忘了大括号:
x -> System.out.println(x); return x * 2;❌ 后半句不在 lambda 内,编译报错

















