黑马程序员技术交流社区

标题: 局部内部类又一题 [打印本页]

作者: 孟江    时间: 2013-6-10 09:36
标题: 局部内部类又一题
为什么局部内部类不可以访问他所在的局部中的变量
作者: shiweiCao    时间: 2013-6-10 10:42
不是final的局部变量,你的方法结束了就没了。

但是你的内部类却不是和你的方法同时执行的,比如实现ActionListener,
当你事件发生的时候才会执行,这时你的方法已经结束了,ActionListener到哪里去找这个局部变量呢?

其实就是一个生命周期的问题,局部的变量, 在方法执行完了之后就施放了,所以访问不了. 走不到内部类的地方去.

黑马云青年回复
作者: 张源锋    时间: 2013-6-10 13:25
局部变量存放在栈内存中,只要方法一结束就没有了,而局部内部类存放在堆内存中,方法结束它也不一定马上消失,而是等GC回收,也就是局部内部类的生存周期比局部变量的生存周期要长,不可能让一个成员去访问一个已经消失的变量。如果你想让局部内部类的访问局部变量,就必须把变量用final来修饰。
作者: 袁梦希    时间: 2013-6-12 19:05
尽量把问题提的详细一点  这样方便大家交流
作者: 袁梦希    时间: 2013-6-12 19:05
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃

加油哦




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