class Outer
{
int x = 1;
void method()
{
int y = 3; //局部内部类访问局部变量时,局部变量前必须用final修饰.
//原因:局部变量存储在栈内存中,而栈内存的最大特点是用完立即消失,所以要加final延长此局部变量的生命周期以便和局部内部类的生命周期相同
//同样是延长生命周期,但不能用static修饰,因为static根本不能修饰局部变量,所以只能用final修饰
//【问题是:】这样没用final也可以
//解决:JDK1.8后默认在局部内部类的局部变量前加上了final
class Inner //局部内部类
{
void function()
{
System.out.println(y);
}
}
new Inner().function();
}
}
class InnerClassDemo
{
public static void main(String[] args)
{
System.out.println("Hello the InnerClassDemo.");
new Outer().method();
}
}
关于局部内部类访问final局部变量的分析
最新推荐文章于 2024-02-21 11:14:32 发布