Lambda表达式可以访问所在外层作用域定义的变量,包括成员变量和局部变量,那么下面就来给大家介绍一下访问成员变量方面的知识。
访问成员变量
成员变量包括了实例成员变量和静态成员变量。
在Lambda表达式当中可以访问这些成员变量,这个时候,Lambda表达式和普通方法相同,能够读取成员变量,也能够修改成员变量。
public class LambdaDemo { // 实例成员变量 private int value = 10; // 静态成员变量 private static int staticValue = 5; // 静态方法,进行加法运算 public static Calculable add() { Calculable result = (int a, int b) - > { // 访问静态成员变量,不能访问实例成员变量 staticValue++; int c = a + b + staticValue; // this.value; return c; }; return result; } // 实例方法,进行减法运算 public Calculable sub() { Calculable result = (int a, int b) - > { // 访问静态成员变量和实例成员变量 staticValue++; this.value++; int c = a - b - staticValue - this.value; return c; }; return result; } }
LambdaDemo类当中,声明一个实例成员变量value和一个静态成员变量staticValue。
除此之外,还声明了静态方法add和实例方法sub。
add方法是静态方法,静态方法当中,不能够访问实例成员变量,所以代码第13行的Lambda表达式当中,也不能访问实例成员变量,也不能访问实例成员方法。
sub方法是实例方法,实例方法当中,能够访问静态成员变量和实例成员变量,所以代码第23行的Lambda表达式中可以访问这些变量,当然实例方法和静态方法也可以访问。
当访问实例成员变量或实例方法时可以使用this,假如,不和局部变量发生冲突情况下可以省略this。
Lambda表达式访问成员变量方面的知识就给你介绍到这里了,更多java入门知识,请继续来奇Q工具网进行了解吧。
推荐阅读: