java8学习笔记
Lambda 表达式
三、Lambda 表达式
5. 类型检查、类型推断以及限制
使用局部变量
Lambda 可以没有限制地捕获(也就是在其主体中引用)实例变量和静态变量。但是局部变量必须显式申明为 final
, 或者事实上是final
。
Variable used in lambda expression should be final or effectively final
例如下面的 代码是可以编译的
1 | int portNumber = 1337; |
上面的代码在 Lambda
中引用了局部变量 portNumber
,虽然这个变量没有声明为 final
,但是在其声明赋初值之后,并没有试图去改变这个变量的值,所以这个变量事实上是 final
状态。
下面的代码不能通过编译
1 | int portNumber = 1337; |
上面的代码在第三行试图修改 portNumber
的值,所以这个变量并不是事实上 final
You need to set
install_url
to use ShareThis. Please set it in _config.yml
.