此前给大家带来了java Lambda表达式访问成员变量详细介绍,下面就要继续给大家介绍java Lambda表达式访问局部变量的内容,一起通过简单的文章来进行了解吧。
对于成员变量的访问Lambda表达式和普通方法没有什么区别,但是,访问局部变量的时候,变量必须是final类型的(不可改变)。
示例:
public class LambdaDemo { // 实例成员变量 private int value = 10; // 静态成员变量 private static int staticValue = 5; // 静态方法,进行加法运算 public static Calculable add() { // 局部变量 int localValue = 20; Calculable result = (int a, int b) - > { // localValue++; // 编译错误 int c = a + b + localValue; return c; }; return result; } // 实例方法,进行减法运算 public Calculable sub() { // final局部变量 final int localValue = 20; Calculable result = (int a, int b) - > { int c = a - b - staticValue - this.value; // localValue = c; // 编译错误 return c; }; return result; } }
在上面的代码当中,第10行和第23行都声明一个局部变量localValue,Lambda表达式中访问这个变量,如代码第14行和第25行。
不论这个变量是否显示显式地使用final修饰,它都不能在Lambda表达式当中修改变量,所以代码第12行和第26行,假如,去掉注释会发生编译错误。
注意,Lambda表达式只能访问局部变量而不能修改,否则会发生编译错误,但对静态变量和成员变量可读可写。
以上的知识你都了解了吗?请多多的关注奇Q工具网吧,更多的java入门知识,可以继续为你分享和解答哦。
推荐阅读: