对于lambdab表达式外部的变量,其访问权限的粒度与匿名对象的方式非常类似。你能够访问局部对应的外部区域的局部final变量,以及成员变量和静态变量。 

访问局部变量 

我们可以访问lambda表达式外部的final局部变量: 

Java代码 
  1. final int num = 1;  
  2. Converter<Integer, String> stringConverter =  
  3.         (from) -> String.valueOf(from + num);  
  4.    
  5. stringConverter.convert(2);     // 3  

但是与匿名对象不同的是,变量num并不需要一定是final。下面的代码依然是合法的: