java Lambda表达式访问局部变量详细介绍

KLQ 2020-09-08 09:40:07 java常见问答 7530

此前给大家带来了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入门知识,可以继续为你分享和解答哦。

推荐阅读:

java使用Lambda表达式遍历Collection集合详解

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

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