有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java8支持本地lambda变量吗?

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

 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) 个答案

  1. # 1 楼答案

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

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

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