1、访问局部变量
可以访问lambda表达式外部的final局部变量:
final int num = 1;converter<integer, string> stringconverter = (from) -> string.valueof(from + num); stringconverter.convert(2); // 3
但是与匿名对象不同的是,变量num并不需要一定是final。在lambda表达式内部企图改变num的值也是不允许的。
2、访问成员变量和静态变量
与局部变量不同,我们在lambda表达式的内部能获取到对成员变量或静态变量的读写权。这种访问行为在匿名对象里是非常典型的。
class lambda4 { static int outerstaticnum; int outernum; void testscopes() { converter<integer, string> stringconverter1 = (from) -> { outernum = 23; return string.valueof(from); }; converter<integer, string> stringconverter2 = (from) -> { outerstaticnum = 72; return string.valueof(from); }; }}
以上就是java lambda的使用范围是什么的详细内容。