Java中多参数Lambda表达式须用小括号包裹显式类型参数并逗号分隔,如(String a, int b) -> a.length() > b;典型用于BiFunction等双参接口,三参需自定义@FunctionalInterface。

Java 中编写带多个参数的 Lambda 表达式,语法很简单:用小括号包裹参数列表,参数之间用逗号分隔,后面接箭头 -> 和方法体。
基本语法格式
多个参数的 Lambda 必须显式写出参数类型(除非上下文已明确推断),且必须加小括号:
(Type1 param1, Type2 param2) -> { /* 方法体 */ }- 如果方法体只有一条语句且有返回值,可省略大括号和
return: (String a, int b) -> a.length() > b
常见使用场景示例
最典型的是函数式接口如 BiFunction、BiPredicate、BinaryOperator 等,它们都接受两个参数:
BiFunctioncheck = (s, len) -> s != null && s.length() == len; BinaryOperatoradd = (x, y) -> x + y; BiPredicate- , Integer> hasSize = (list, n) -> list != null && list.size() == n;
注意事项
多个参数不能省略括号,即使类型相同也不行;也不能省略参数名(哪怕不用):
- ✅ 正确:
(int x, int y) -> x * y - ❌ 错误:
int x, int y -> x * y(缺括号) - ❌ 错误:
(x, y) -> x * y(类型未声明,且无上下文推断时编译失败)
配合自定义函数式接口使用
如果你有三参数逻辑,可以自定义函数式接口(需且仅有一个抽象方法):
@FunctionalInterface
interface TriFunction<t u v r> {
R apply(T t, U u, V v);
}</t>然后这样用:
TriFunctionconcatAndRepeat = (a, b, n) -> (a + b).repeat(n);
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











