当前位置: 代码迷 >> Java相关 >> 大家看看这个程序是什么原因吧,谢谢了。
  详细解决方案

大家看看这个程序是什么原因吧,谢谢了。

热度:105   发布时间:2006-01-05 22:06:00.0
大家看看这个程序是什么原因吧,谢谢了。

class Outer
{
int outer_x=100;
void test()
{
for(int i=0;i<10;i++)
{
class Inner
{
void display()
{
System.out.println("display:outer_x"+outer_x);
}
}

}
Inner inner=new Inner();//cannot resolve symbol class Inner
inner.display();
}
}
class InnerClassDemo
{
public static void main(String []args)
{
Outer outer=new Outer();
outer.test();
}
}

这样运行出现错误:cannot resolve symbol class Inner

然后把 Inner inner=new Inner();
inner.display();
放到for循环内,就没这个错误了:
class Outer
{
int outer_x=100;
void test()
{
for(int i=0;i<10;i++)
{
class Inner
{
void display()
{
System.out.println("display:outer_x"+outer_x);
}
}
Inner inner=new Inner();
inner.display();
}

}
}
class InnerClassDemo
{
public static void main(String []args)
{
Outer outer=new Outer();
outer.test();
}
}

这是为什么呢???


----------------解决方案--------------------------------------------------------
因为Inner类在for中在它之外不可见.如果for不满足条件呢.
没有声明Inner类,
Inner inner=new Inner();
inner.display();
以上这句不就错了.
----------------解决方案--------------------------------------------------------
哦,知道了,谢谢了。
----------------解决方案--------------------------------------------------------
  相关解决方案