黑马程序员技术交流社区

标题: 为什么方法中的内部类要访问临时局部变量必须加final... [打印本页]

作者: 付玉光    时间: 2013-2-25 18:30
标题: 为什么方法中的内部类要访问临时局部变量必须加final...
   为什么方法里面的内部类要访问临时局部变量时必须加final关键字来修饰?是不是被final修饰的临时局部变量生命周期会延长呀?师兄师姐们谁能给小弟,解释一下呀?{:soso_e100:}

作者: 黑马刘杰    时间: 2013-2-25 19:13
就是生命周期的问题啊

Java程序中内部类对象的生命周期会超过局部变量的生命期。

局部变量的生命期:当该方法被调用时,该方法中的局部变量在栈中被创建,当方法调用结束时,退栈,这些局部变量全部死亡。

而内部类对象生命期,与其它类一样,当创建一个局部内部类对象后,只有当没有其它人再引用它时,它才能死亡。

所以完全可能一个方法已调用结束(局部变量已死亡),但该局部类的对象仍然活着。即:局部类的对象生命期会超过局部变量。

加final就可以解决这个问题
作者: 刘凯    时间: 2013-2-25 20:24
看这里http://bbs.itheima.com/forum.php?mod=viewthread&tid=20708&highlight=%E5%B1%80%E9%83%A8%E5%86%85%E9%83%A8%E7%B1%BB%E8%AE%BF%E9%97%AE




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