一、内部类原理
内部类(inner class) 是定义在类中的类。如下所示:
public class Outer{
private int num ;
public class Inner implements Interface{
public void print(){
System.out.println(num);
}
}
}
使用内部类有几方面的考虑:
- 方便访问类中的所有数据,包括私有变量、私有方法
- 隐藏对其他类无关的类,比如实现了某个接口的回调类。
- 使用匿名类来简化代码
内部类是一种编译器现象,与虚拟机无关。编译器将内部类翻译成 外部类名$内部类名
的常规类文件,JVM层面将其当作普通类文件处理。
使用javap 分析或者使用反射机制对类Outer$Inner进行分析,如下:
'''外部类文件'''
public class Outer{
int num;
static int access$0(Outer);