A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 孟江 中级黑马   /  2013-6-10 09:36  /  1453 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么局部内部类不可以访问他所在的局部中的变量

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

4 个回复

倒序浏览
不是final的局部变量,你的方法结束了就没了。

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

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

黑马云青年回复

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
局部变量存放在栈内存中,只要方法一结束就没有了,而局部内部类存放在堆内存中,方法结束它也不一定马上消失,而是等GC回收,也就是局部内部类的生存周期比局部变量的生存周期要长,不可能让一个成员去访问一个已经消失的变量。如果你想让局部内部类的访问局部变量,就必须把变量用final来修饰。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
尽量把问题提的详细一点  这样方便大家交流
回复 使用道具 举报
楼主你好  如果问题已经解决  请把帖子的类型改为已解决  然后会给你发几个粽子吃

加油哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马