Java中Lambda的使用范围

在之前的学习中,我们已经对Lambda表达式有所接触,并进行了相关的操作。那么在具体的使用过程上,我们需要明确其具体的使用范围。本篇将以三种访问类型为例,局部变量、成员变量和静态变量,并为大家讲解不同访问情景下,Lambda表达式的不同操作,下面一起来看具体内容。

1、访问局部变量

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

finalintnum=1;
Converter<Integer,String>stringConverter=
(from)->String.valueOf(from+num);

stringConverter.convert(2);//3

但是与匿名对象不同的是,变量num并不需要一定是final。在lambda表达式内部企图改变num的值也是不允许的。

2、访问成员变量和静态变量

与局部变量不同,我们在lambda表达式的内部能获取到对成员变量或静态变量的读写权。这种访问行为在匿名对象里是非常典型的。

classLambda4{
staticintouterStaticNum;
intouterNum;

voidtestScopes(){
Converter<Integer,String>stringConverter1=(from)->{
outerNum=23;
returnString.valueOf(from);
};

Converter<Integer,String>stringConverter2=(from)->{
outerStaticNum=72;
returnString.valueOf(from);
};
}
}
原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容