Java7及以前的版本中,局部内部类(即定义在方法体中的内部类)是不可以访问方法体中的普通局部变量中的。因为局部内部类的生命周期有可能比局部变量的长。当方法返回值是该内部类的对象时,方法一旦被调用结束,方法中的局部变量A就被销毁,而作为返回值的局部内部类对象还依然存在。此时这个对象就访问不到A了。有一个例外就是,局部内部类可以访问fianl的局部变量。因为既然是final的,那么它的值就不会再改变,所以在编译的时候,只要把这个final局部变量复制到局部内部类里边,就可以解决由生命周期长度导致的访问不到的问题。
public class Test {
public static void main(String[] args) {
OUT ou = new OUT();
superINNER suIN = ou.method();
suIN.method1();
}
}
interface superINNER{