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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈潜 中级黑马   /  2013-5-20 21:11  /  1857 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、内部类不是直接调用方法中的参数,而是通过复制到了自己内部,调用的是自己内部的那个参数,也因为如此,导致内部类修改这个参数的时候只改变了自己的参数,而方法中那个局部变量没有改变,为了保持一致性,使用final。
2、二者的生命周期不一样,为了防止方法结束局部变量销毁,而导致内部类无法访问,使用final。

是以上者2个原因吗?

评分

参与人数 1技术分 +1 收起 理由
刘胜寒 + 1

查看全部评分

4 个回复

倒序浏览
问题没有表述明白,最好能上代码
回复 使用道具 举报
FantasticPie 发表于 2013-5-20 21:35
问题没有表述明白,最好能上代码

在毕向东二十五天基础视频中,关于文件合并的中提到过了。你可以看一下。
楼主的意思是内部类去访问局部变量。局部变量必须用final修饰。
回复 使用道具 举报
方法内部类对象不能使用该内部类所在方法的非final局部变量。
因为方法的局部变量位于栈上,只存在于该方法的生命期内。当一个方法结束,其栈结构被删除,局部变量成为历史。但是该方法结束之后,在方法内创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,并存储在一个成员变量内。正因为不能保证局部变量的存活期和方法内部类对象的一样长,所以内部类对象不能使用它们。

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
刘胜寒 发表于 2013-5-20 21:41
在毕向东二十五天基础视频中,关于文件合并的中提到过了。你可以看一下。
楼主的意思是内部类去访问局部 ...

嗯,收到!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马