标题: 内部类的问题 [打印本页] 作者: 王--明 时间: 2012-2-26 20:17 标题: 内部类的问题 内部类访问局部变量为什么要定义成final类型。求详解。作者: 唐学松 时间: 2012-2-26 20:34
因为局部变量是临时的,方法一旦执行完毕即被释放,而内部类是要在java虚拟机中动态运行的程序,它的生命周期不随方法的结束而结束,故而。。。
如下:
class A
{
int i = 3;
public void shout()
{
class B
{
public void shout1()
{
System.out.println(i);
}
}
B b=new B();
b.shout1();
}
public static void main(String [] args)
{
A a=new A();
a.shout();
}
}
可正常输出3,证明可以访问类的变量i,但改为下面的方式:
class A
{
public void shout(int temp)
{
final int i = temp;
class B
{
public void shout1()
{
System.out.println(i);
}
}
B b=new B();
b.shout1();
}
public static void main(String [] args)
{
A a=new A();
a.shout(3);
}
}