Java Lambda表达式用→替代匿名内部类,核心是只保留“做什么”,要求接口为函数式接口;语法为参数→方法体,支持类型推断、括号省略及多行逻辑,返回值需显式return。

Java Lambda 表达式用 →(箭头)替代匿名内部类,核心是只保留“做什么”,省去“怎么包装”。前提是接口必须是函数式接口(只有一个抽象方法)。
语法结构:参数 → 方法体
左边是参数列表,右边是方法实现逻辑。类型可省略(编译器自动推断),单参数时括号也可省略:
- 无参:() → System.out.println("Hello")
- 单参:x → x * x(等价于 (x) → x * x)
- 多参:(a, b) → a + b
- 多行逻辑:(a, b) → { int sum = a + b; return sum > 10; }
替代 Runnable 匿名类
传统写法冗长:
new Thread(new Runnable() {
public void run() {
System.out.println("Running");
}
});Lambda 写法简洁清晰:
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
立即学习“Java免费学习笔记(深入)”;
new Thread(() -> System.out.println("Running")).start();替代 Comparator 匿名类
排序时常见场景:
- 老写法:Arrays.sort(arr, new Comparator<String>() { public int compare(String a, String b) { return a.length() - b.length(); } });
- Lambda 写法:Arrays.sort(arr, (a, b) → a.length() - b.length());
- 更简写法(方法引用):Arrays.sort(arr, Comparator.comparing(String::length));
注意返回值与语句表达式区别
箭头右边如果是表达式(如 x → x + 1),自动返回结果;如果是语句块(用 {} 包裹),需显式写 return:
- 正确:x → x + 1
- 正确:x → { return x + 1; }
- 错误:x → { x + 1; }(缺少 return,且无返回值)

















