考虑一个代码(不可编译):
List<String> list = Arrays.asList("a", "b");
list.stream().map(s ->
String variable = method(s)
variable + "debug"
);
private String method(String s) {
return s;
}
行String variable = method(s)
未编译。
我可以在 lambda表达式中定义局部变量,还是被设计禁止?
答案 0 :(得分:12)
是的,但是多语句lambdas需要将代码块包装在大括号中。您还需要在语句的末尾正确使用分号。您还需要使用return
关键字。
list.stream().map(s ->{
String variable = method(s);
return variable + "debug";
}
);
单个语句lambdas有一个隐含的return
来保存您的输入并使lambda更具可读性。