1. 程式人生 > >深入理解Java中為什麼內部類可以訪問外部類的成員

深入理解Java中為什麼內部類可以訪問外部類的成員

{
  final Outer this$0;
    flags: ACC_FINAL, ACC_SYNTHETIC


  Outer$Inner(Outer);
    flags:
    Code:
      stack=2, locals=2, args_size=2
         0: aload_0
         1: aload_1
         2: putfield      #10                 // Field this$0:LOuter;
         5: aload_0
         6: invokespecial #12                 // Method java/lang/Object."<init>":()V
         9: return
      LineNumberTable:
        line 5: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0      10     0  this   LOuter$Inner;

  void InnerMethod();
    flags:
    Code:
      stack=1, locals=2, args_size=1
         0: aload_0
         1: getfield      #10                 // Field this$0:LOuter;
         4: getfield      #20                 // Field Outer.outerField:I
         7: istore_1
         8: return
      LineNumberTable:
        line 7: 0
        line 8: 8
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
               0       9     0  this   LOuter$Inner;
               8       1     1     i   I
}