在 Lambda 作用域中访问外部变量和再匿名内部类中类似,既可以访问 final 变量也可以访问实例和静态字段。
但与匿名内部类不同的是 外部变量比如下面的 num 不一定必须是 final 修饰 但是 num 必须隐式是 final 即不可修改的。
1 2 3 4 5 6 7 8
// final int num = 1; intnum=1; // int finalNum = num; // Variable used in lambda expression should be final or effectively final Converter<Integer, String> converter = (from -> String.valueOf(from + num)); Strings1= converter.convert(2); System.out.println("s1 = " + s1); // num = 3;