这是因为您正在使用匿名内部类。发生的是编译器为您创建了类。它将其称为您的外部类,并添加
$和编号,例如
$,
$2等等。
该类具有对自动初始化的外部类的引用,因此其实例可以使用外部类的方法和字段。
但是您的课程是匿名的。这样的内部方法定义,并且可以使用 它 这个匿名类之前定义的内部变量。问题是“它怎么做?”
确实,您不能引用“正在运行的方法实例”来访问其变量。答案是将从匿名内部类引用的所有方法变量都复制到匿名内部类。因此,变量必须是最终变量:否则,某些人可以从外部类更改其值,并且内部类看不到这些更改。



