java Lambda表达式访问成员变量详细介绍

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工具网进行了解吧。

推荐阅读:

java Lambda表达式优缺点,函数式接口详细介绍

java Lambda表达式的使用,作为参数使用详解

java局部内部类详细介绍