黑马程序员技术交流社区

标题: 方法中的内部类调用方法中的局部变量 [打印本页]

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

是以上者2个原因吗?

作者: FantasticPie    时间: 2013-5-20 21:35
问题没有表述明白,最好能上代码
作者: 刘胜寒    时间: 2013-5-20 21:41
FantasticPie 发表于 2013-5-20 21:35
问题没有表述明白,最好能上代码

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

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

嗯,收到!




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