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

时间:2015-09-12 15:02:40

标签: 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;
 }

String variable = method(s)未编译。

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

1 个答案:

答案 0 :(得分:12)

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

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

单个语句lambdas有一个隐含的return来保存您的输入并使lambda更具可读性。