作者似乎是指将捕获的变量转换为本地/匿名类的字段这一事实。
如果您不满意
LocalClass,可以看到以下内容(
Main封闭类的名称在哪里):
class Main$1LocalClass { final int val$y; final Main this$0; Main$1LocalClass(); Code: 0: aload_0 1: aload_1 2: putfield #1 // Field this$0:LMain; 5: aload_0 6: iload_2 7: putfield #2 // Field val$y:I 10: aload_0 11: invokespecial #3 // Method java/lang/Object."<init>":()V 14: getstatic #4 // Field java/lang/System.out:Ljava/io/PrintStream; 17: aload_0 18: getfield #2 // Field val$y:I 21: invokevirtual #5 // Method java/io/PrintStream.println:(I)V 24: return}第一个字段是局部变量
y,第二个字段是对封闭实例的引用。此外,这些值被隐式传递到本地类的构造函数中。
本质上
LocalClass看起来像这样:
class LocalClass { final int val$y; final Main this$0; LocalClass(Main arg1, int arg2) { this.this$0 = arg1; // bytepre 1-2 this.val$y = arg2; // bytepre 5-7 super(); // bytepre 10-11 System.out.println(this.val$y); // bytepre 14-21 }}


