public class LocalInnerClassUnitTests {
public void defineInnerClass(final int x) {
class MyLocalInnerClass {
public void doSomething() {
System.out.println(x);
}
}
}
}
int x 是本地变量,因为java底层的机制不能存取本地变量,这样导致内部类,没有办法取过来,所以java用了一个小聪明,直接把本地变量的refrenece拷贝到内部类。
因为这个小聪明,一般容易让人误解。所以他在编译器里面,加上了一个final,让你不要改变这个值,然你只读不能存,这样感觉就好了 |