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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付剑翊 中级黑马   /  2014-8-30 10:02  /  1041 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么局部内部类的方法没有办法访问内部类所在的局部变量?

6 个回复

倒序浏览
你的意思是内部类中不能访问类中的局部变量是吗?

这是生命周期的问题。
内部类的声明周期是和类一样的,声明周期长。
而局部变量,是实例化的时候才会加载,生命周期短,
你在内部累中就访问这个局部变量,它可能还没“出生”呢,如果你就非要访问,那么就需要让这个局部变量的生命周期变长,至少和类的生命周期一样,可以加finl修饰一下,变为常量,就可以访问了。

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

回复 使用道具 举报 1 0
【灰太狼】 发表于 2014-8-30 20:47
你的意思是内部类中不能访问类中的局部变量是吗?

这是生命周期的问题。

嗯嗯,谢谢~
回复 使用道具 举报
华谦 来自手机 中级黑马 2014-8-30 23:16:08
板凳
加静态貌似可以
回复 使用道具 举报
恩,一楼,回答的很好
回复 使用道具 举报
学完又忘了。温故知新,加油!
回复 使用道具 举报
【灰太狼】 发表于 2014-8-30 20:47
你的意思是内部类中不能访问类中的局部变量是吗?

这是生命周期的问题。

后来老师还讲到,其实跟生命周期有关系不错,实际是。。代码编译完的.class文件中,已经将使用final局部变量给替换成常量,也就是编译之后,局部内部类中所引用的局部变量的位置就已经被替换成具体数值,也就是说这个局部内部类的引用生命周期即使很长,也不会因为找不到那个局部变量是导致运行失败或者什么
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马