为什么局部内部类或匿名内部类访问的局部变量必须有final修饰
普通的局部变量其生命周期只是所属方法的生命周期,而内部类使其访问的局部变量生命周期得到延长
如果局部变量未经final修饰就可以被任意修改,这将引发问题。
普通的局部变量其生命周期只是所属方法的生命周期,而内部类使其访问的局部变量生命周期得到延长
如果局部变量未经final修饰就可以被任意修改,这将引发问题。
public class InnerClassTest {
public static void main(String[] args) {
// 定义一个局部变量
final String str = "Java";
// 在内部类里访问局部变量str
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 100; i++) {
// 此处将一直可以访问到str局部变量
System.out.println(str + " " + i);
// 暂停0.1秒
try {
Thread.sleep(100);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}).start();
// 执行到此处,main方法结束
}
}