美文网首页工作生活
Lamda 表达式作用域(Lambda Scopes)

Lamda 表达式作用域(Lambda Scopes)

作者: xuweiqiang | 来源:发表于2019-07-01 00:56 被阅读0次

    Lamda 表达式作用域(Lambda Scopes)

    访问局部变量

    我们可以直接在 lambda 表达式中访问外部的局部变量:

    final int num = 1;

    Converter<Integer, String> stringConverter =

            (from) -> String.valueOf(from + num);

    stringConverter.convert(2);    // 3

    但是和匿名对象不同的是,这里的变量num可以不用声明为final,该代码同样正确:

    int num = 1;

    Converter<Integer, String> stringConverter =

            (from) -> String.valueOf(from + num);

    stringConverter.convert(2);    // 3

    不过这里的 num 必须不可被后面的代码修改(即隐性的具有final的语义),例如下面的就无法编译:

    int num = 1;

    Converter<Integer, String> stringConverter =

            (from) -> String.valueOf(from + num);

    num = 3;//在lambda表达式中试图修改num同样是不允许的。

    相关文章

      网友评论

        本文标题:Lamda 表达式作用域(Lambda Scopes)

        本文链接:https://www.haomeiwen.com/subject/petwcctx.html