黑马程序员技术交流社区

标题: 关于局部内部类对象的生命周期 [打印本页]

作者: mudao    时间: 2014-10-13 00:57
标题: 关于局部内部类对象的生命周期
晚上回看了老师昨天讲的视频,讲到局部内部类访问局部变量的时候,局部变量是需要使用final修饰,老师解释这个问题的时候,内含局部内部类的外部方法(test())执行完毕,具备内部类创建的对象(inner)并没有消失。我想问这个内部类创建的对象的生命周期是什么时候才结束?(具体代码如下)

/*局部类要注意的细节:
        局部内部类访问局部变量的时候,局部 变量是需要使用final修饰的。
*/

//外部类
class Outer{
        public void test(){
                //局部变量
                final         int y = 100;
                /*  y的生命周期:test方法执行完毕之后马上从内存消失。
                局部内部类访问 局部变量的时候,局部变量是需要使用final修饰,为什么?
                */
                //局部内部类
                class Inner{
                        //成员变量
                                int x = 10;       
                        //成员函数
                        public void print(){
                                System.out.println("这个是局部内部类的print方法..."+y);
                        }
                }
                //创建局部内部类对象
                Inner inner = new  Inner(); // Inner对象生命周期: 反正Inner的对象当test执行完毕之后还不会马上消失。
                                                           // Inner对象的生命周期是比y要长的。
                inner.print();
        }
}

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



作者: Quasimodo    时间: 2014-10-13 01:20
这么说吧。
只要还有人在引用内部类的对象,那它就会在内存中一直存在下去。所以生命周期当然长啦
而外部方法中的局部变量在方法执行完的时候就消失了,所以如果内部类中有引用局部变量的话,就会找不到局部变量了,所以要用final修饰
被final修饰的局部变量会作为内部类的构造函数的参数传入内部类




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2