1、访问成员变量
Lambda表达式可以访问和修改成员变量(实例成员和讲台成员)
代码实例
public class LambdaDemo {
//实例成员变量
private int value = 10;
//静态成员变量
private static int staticValue = 5;
//静态方法,进行加法运算
public static Calculable add(){
Calculable resylt = (int a,int b)->{
//访问静态成员变量,不能访问实例成员变量
staticValue++;
int c = a + b +staticValue; //this.Value
return c;
};
return resylt;
}
//实例方法,进行减法运算
public Calculable sub(){
Calculable result = (int a,int b)->{
//访问静态成员变量和实例成员变量
staticValue++;
this.value++;
int c = a - b - staticValue - this.value;
return c;
};
return result;
}
}
2、捕获局部变量
Lambda表达式可以访问局部变量,但是这个过程发生“捕获变量”,捕获的变量就final的变量。
代码实例:
public class LambdaDemos {
//实例成员变量
private int value = 10;
//静态成员变量
private static int staticValue = 5;
//静态方法,进行加法运算
public static Calculable add(){
//局部变量
int localValue =20;
Calculable resylt = (int a,int b)->{
//访问静态成员变量,不能访问实例成员变量
//localValue++;//编译错误
int c = a + b +localValue;
return c;
};
return resylt;
}
//实例方法,进行减法运算
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;
}
}