page contents

关于lambda 访问外部变量

Pack 发布于 2020-02-25 16:27
阅读 622
收藏 0
分类:Java开发

lambda 表达式内访问外部变量 在编译时都会提示 外部变量必须是final的,
但是为什么通过数组的方式可以访问外部变量?求详细解答下疑惑

                int[] a  ={1};
                List<String> b = new ArrayList<>();
                b.add("1");
                b.add("2");
                if(b.size()==2){
                    a[0]=0;
                }
                b.forEach(s->{
                    xxx(a[0]);
                });
    }
    public static void xxx(int x){
        System.out.println(x);
    }

443
Pack
Pack

外部声明数组的话,只要引用不变,数组自身添加和修改元素都是允许的,final 修饰下不变的只是变量引用,如果是基本类型的数值或者字符串,为了防止内部修改该变量值,就会出现需要 final 修饰的提示。

请先 登录 后评论