当前位置: 代码迷 >> Java相关 >> 在for循环中定义内部类的问题
  详细解决方案

在for循环中定义内部类的问题

热度:63   发布时间:2006-01-15 13:19:00.0
在for循环中定义内部类的问题
在下面的程序中:
class Outer
{ final int i=100;



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();
}
}

这个for循环中,每次循环在满足循环条件的情况下都要定义一次类class Inner,共定义了10次,我想知道为什么这不是类的重定义,因为编译能通过;同样,每次循环都生成了一个Inner类的对象inner,共生成了10个,为什么也能通过编译,而没有出现重定义的错误?

谢谢!!

[此贴子已经被作者于2006-1-15 17:50:50编辑过]

搜索更多相关的解决方案: 部类  定义  

----------------解决方案--------------------------------------------------------

因为都是局部变量咯 出了for循环就失去了生命周期


----------------解决方案--------------------------------------------------------
但是这个类class Inner和对象inner的定义都是在for循环的内部呀,还没出for循环哪。
----------------解决方案--------------------------------------------------------
出了  一次循环就是一个生命周期
----------------解决方案--------------------------------------------------------

搞那么深奥的名词干吗?晕,你说出来她也不一定能

理解.

[此贴子已经被作者于2006-1-17 20:05:30编辑过]


----------------解决方案--------------------------------------------------------
呵呵,那你说个通俗易懂的吧。
----------------解决方案--------------------------------------------------------
因为都是在FOR循环的内部,FOR语句一次编译一个类,一共编译了十次,就是十个,我认为是这样
----------------解决方案--------------------------------------------------------
class   Inner并未重复定义,只编译一次.   
  Inner   inner=new   Inner();重复运行了十次,   
  但每次的   inner   都不一样,inner是个局部变量   
  可通过修改   void   display()看出   
void   display()
{   
  System.out.println("display:outer_x"+outer_x);   
  System.out.println("this:"+this);   
}
----------------解决方案--------------------------------------------------------
...   
  display:outer_x100   
  this:inner$1Inner@d9f9c3   
  display:outer_x100  
  this:inner$1Inner@9cab16   
  display:outer_x100  
  this:inner$1Inner@1a46e30   
  ....   
  @后面的都不同
----------------解决方案--------------------------------------------------------
  相关解决方案