闭包
2015-10-14 00:33
218 查看
引用自《Thinking in Java》:
“闭包也是一种为表示带有自由变量的过程而用的实现技术
”
参考资料:
why-are-only-final-variables-accessible-in-anonymous-class
维基百科地址
“闭包也是一种为表示带有自由变量的过程而用的实现技术
”
为什么Java中匿名类引用外部的局部变量必须是final类型的
因为理论上 匿名类和外部的局部变量应该是同一个引用(注意是一个引用而不是多个引用指向同一个对象)。但是由于两者的生命周期不同,并且没有确定的先后关系,对于内部类闭包,由于内部类实例生命周期晚于外部类所以不需要为final,但是由于匿名类没有这种先后关系,所以实际上,他们是不同的引用,但是为了保证逻辑上的一致性,将匿名内部类强制为final。
参考资料:
why-are-only-final-variables-accessible-in-anonymous-class
维基百科地址
相关文章推荐
- 深入理解PHP之匿名函数
- Ruby中使用Block、Proc、lambda实现闭包
- LUA中的闭包(closure)浅析
- Lua中的闭包学习笔记
- C#中函数的创建和闭包的理解
- javascript prototype,executing,context,closure
- 深入理解javascript作用域和闭包
- javascript作用域和闭包使用详解
- 谈谈JavaScript中的函数与闭包
- 细品javascript 寻址,闭包,对象模型和相关问题
- JavaScript中的闭包原理分析
- 浅谈javascript中的闭包
- javascript 闭包详解
- JavaScript 匿名函数和闭包介绍
- JavaScript 闭包深入理解(closure)
- 深入理解JavaScript 闭包究竟是什么
- JavaScript中的闭包(Closure)详细介绍
- 闭包
- Swift3.0带来的变化汇总系列三——函数和闭包写法上的微调