今天群里讨论java的lambda实现. 后来不断衍生谈到了为什么lambda和匿名内部类只能使用语义final的外部变量. 最开始以为是java的lambda实现问题,编译期魔法会把外部引用作为参数传入所以在内部变化也影响不了下次调用的值,所以就干脆final了,如果用类的属性来保管这个变量就可以了. In [64]: def outer(a:int): ...: def inner(): ...: nonlocal a ...: a = a + a ...: return a ...: re
为了简化匿名内部类的代码,具体定义: 例如将9.内部类中的匿名内部类例子: 原来代码: //Main.java public class Main { public static void main(String[] args){ ProcessArray ay = new ProcessArray(); int[] array = {1, 2, 3}; ay.process(array, new AddCommand() { @Override public void process(int[