闭包与内部类 中英文社区中,比较常见的对闭包的定义是 引用了自由变量的一段代码或函数,被引用的自由变量和函数(一段代码)共同存在,即使离开了创造它的环境 内部类 按照我的理解,scala/java中虽然并不存在语法级地支持或是定义,对于闭包而言,一些概念和闭包的概念一致。一般理解scala中的一些概念,我会倾向于从Java开始。 Java中的内部类 在java中,内部类有: 成员内部类 静态内部类 局部内部类 匿名内部类 成员内部类 class Outer1{ private int a1; private static int s1; void f1() { } class Inner1{ int a2; void f2(){ //access outer's field,function int b=a1; //可以直接引用或是Outer1.this.a1; Outer1.this.f1(); int c=Outer1.s1; } } } 拿以上代码举例,成员内部类可以访问到外部类中的所有字段、方法,包括私有。 内部类的实现均是通过编译器构造字节码实现的。上述类经过编译产生的类大概如下 class Outer1{ private int a1; private static int s1; void f1() { } static int access$000(Outer1