标题: 为什么会异常? [打印本页] 作者: 马雨铎 时间: 2011-7-28 23:07 标题: 为什么会异常? public class LianXil {
static int h=1;
private int i=2;
public void myVoid()
{
final int j=3;
int k=4;
class Nei
{
public void myNeiVoid()
{
System.out.println(h);
System.out.println(i);
System.out.println(j);
//System.out.println(k);
}
}
Nei n=new Nei();
n.myNeiVoid();
}
public static void main(String args[])
{
LianXil lx=new LianXil();
lx.myVoid();
}
}
h、i、j 都能正常访问,但是 把第四个//System.out.println(k); 给释放,访问 K 就会发生变异异常,这是为什么?作者: 匿名 时间: 2011-7-28 23:38
你把第四个//System.out.println(k)给注释,但你在
public void myVoid()
{
final int j=3;
int k=4;
方法中的对象中定义了K成员变量啊,在这你又调用了 lx.myVoid(); 方法,程序就没找到变量K,所以会异常啊作者: 袁春龙 时间: 2011-7-28 23:43 标题: 回复 楼主 的帖子 内部类的方法要访问外部类的成员要加final修饰符
[ 本帖最后由 袁春龙 于 2011-07-28 23:45 编辑 ]作者: 匿名 时间: 2011-7-29 00:21 标题: 回复 楼主 的帖子 这样[code]public class LianXil {
static int h=1;
private int i=2;
public void myVoid()
{
final int j=3;
final int k=4;
class Nei
{
public void myNeiVoid()
{
System.out.println(h);
System.out.println(i);
System.out.println(j);
System.out.println(k);
}
}
Nei n=new Nei();
n.myNeiVoid();
}
public static void main(String args[])
{
LianXil lx=new LianXil();
lx.myVoid();
}
} [/code]把 int k = 4;声明为final