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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 壹贰叁 中级黑马   /  2014-11-22 16:48  /  865 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 壹贰叁 于 2014-11-22 18:02 编辑

谁能跟我讲讲,为什么将内部类定义在方法中,就不能使用方法的参数,而给参数添加final声明后就能使用呢?这边有点不清楚

8 个回复

倒序浏览
因为内部类也是一个类,存在与堆内存中,只有当该类的引用消失后,该类才会消失
而方法中的局部变量存在于栈内存中,当调用结束后,此属性就会消失
即:内部类的生命周期大于局部变量的生命周期。加上final修饰后,局部变量就会
存在于堆内存中,生命周期和工程周期一样,内部类就可以访问了

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
视频你没认真看吧,毕老师解释了原因的。
回复 使用道具 举报
sk0806 发表于 2014-11-22 16:57
因为内部类也是一个类,存在与堆内存中,只有当该类的引用消失后,该类才会消失
而方法中的局部变量存在于 ...

受教了,谢谢:)
回复 使用道具 举报
楼上说得对  跟局部变量的生命周期有关系,局部内部类的生命长过局部变量的生命,
假设,局部变量如果用完后死了,那么局部类却还活着调用了局部变量的值,这死了的值,调用还有啥意义的...都死了就让他逝值安息吧,^_^
回复 使用道具 举报
最关键的好像是生命周期不同吧
回复 使用道具 举报
夜海 中级黑马 2014-11-22 23:10:20
7#
想、因为内部类对象 调用 方法变量时 刚发结束 变量就消失了 可对象还存在
回复 使用道具 举报
huangkj 中级黑马 2014-11-23 00:37:02
8#
生命周期的问题, 因为局部变量使用完后就会立刻消失,而内部类还要使用变量的话就会出错,所以要延长变量生命周期
回复 使用道具 举报
学习学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马