java 8是否支持本地lambda变量?

Che*_*rry 3 java lambda java-8

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

 List<String> list = Arrays.asList("a", "b");
 list.stream().map(s ->
         String variable = method(s)
         variable + "debug"
 );

 private String method(String s) {
         return s;
 }
Run Code Online (Sandbox Code Playgroud)

线String variable = method(s)未编译.

我可以 lambda表达式中定义局部变量,还是被设计禁止?

dka*_*zel 12

是的但是多语句lambdas需要将代码块包装在大括号中.您还需要在语句的末尾正确使用分号.您还需要使用return关键字.

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

单个语句lambda有一个暗示可以避免return输入,并使lambda更具可读性.