美文网首页工作生活
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