如下:
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);
}
}此时i必须为final,怎么理解呢?