Java 内部类调用局部变量为什么要加final关键字

2018-11-02  本文已影响10人  哎呀啊噢

记录一个知识点小细节:
内部类:通过指向一个外部类的引用,做到自由访问外部环境类的所有字段,变相把环境中的自由变量封装到函数中,形成一个闭包。(其实java中到处都是闭包,只是不被我们感知而已...)
对于匿名内部类,java编译器只是值传递,并未实现引用传递。而只有引用传递才能保持内部类与外部环境的局部变量保持同步。(不同的堆栈)
目的: Java设计者想要匿名函数或者Lambda函数内部外部数据保持一致性

上一篇下一篇

猜你喜欢

热点阅读