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