方法中的内部类可以访问方法中的局部变量,但是必须在局部变量前加修饰符final,否则将会编译错误。
原因:在内存中,方法的局部变量是存储在堆栈中的, 当方法返回时,局部变量对应的栈就被回收了,当方法内部类去访问局部变量时就会发生错误。
在java里面修饰词 final修饰过的变量的值是不可以被修改的,当在变量前加上final时,这样局部变量就会被分配在堆内存中。
这样在进行编译时就不会出现访问变量的错误。
public class Test2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//例子:
example();
}
private static void example() {
final int a = 10;
//String b = 20;
// 创建一个方法里的局部内部类
class Test
{
public void in() {
System.out.println(a);
//System.out.println(b);
}
}
Test test = new Test();
//调用内部类方法
test.in();
}
}
|
|