Java8支持本地lambda变量吗?

Java8支持本地lambda变量吗?,java,lambda,java-8,Java,Lambda,Java 8,考虑一个代码(不可编译): List List=Arrays.asList(“a”、“b”); list.stream().map(s-> 字符串变量=方法 变量+“调试” ); 私有字符串方法(字符串s){ 返回s; } 未编译行String variable=method 我可以在lambda表达式中定义一个局部变量,还是设计禁止使用它?是,但是多语句lambda需要将代码块用大括号括起来。您还需要在语句末尾正确使用分号。您还需要使用return关键字 list.stream().map(

考虑一个代码(不可编译):

List List=Arrays.asList(“a”、“b”);
list.stream().map(s->
字符串变量=方法
变量+“调试”
);
私有字符串方法(字符串s){
返回s;
}
未编译行
String variable=method


我可以在lambda表达式中定义一个局部变量,还是设计禁止使用它?

是,但是多语句lambda需要将代码块用大括号括起来。您还需要在语句末尾正确使用分号。您还需要使用
return
关键字

list.stream().map(s ->{
            String variable = method(s);
            return variable + "debug";
        }
    );

单语句lambda有一个隐含的
返回
,以避免键入,并使lambda更具可读性。

调试
判断,您不想
peek()
?看看定义lambda体的过程。您会遇到什么错误?什么使你认为你不能有局部变量?
list.stream().map(s ->{
            String variable = method(s);
            return variable + "debug";
        }
    );