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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 面具猴 中级黑马   /  2014-10-14 17:16  /  1565 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 面具猴 于 2014-11-18 09:37 编辑

为甚么内部类访问的局部变量要加final,还有内部类访问外部类的成员变量都有什么限制吗?

3 个回复

倒序浏览
因为局部变量在函数执行完的时候就会消失,但是内部类只有有人还在引用它,它就会一直存在下去。所以内部类的生命周期要大过所在函数的局部变量。这样内部类访问成员变量的时候,成员变量已经消失了,就会出错了。所以要给成员变量加final修饰。
内部类访问外部类的成员变量都有什么限制,这个倒目前为止我也不知道是不是有啥限制。。。既然内部类能直接访问外部类中的成员,包括私有的。那么应该不会有什么限制吧。这只是乱猜的哦
回复 使用道具 举报
其实就是周期问题,还有就是保持值的一致性
回复 使用道具 举报
本帖最后由 mmppp 于 2014-11-26 17:16 编辑

朋友 ,因为内部类,也是类,它的生命周期长。而局部变量的话,是随着方法的加载而加载,方法运行完以后,就会消失。这样你的类中就出现了没有定义的参数,就会出现错误。所以要用final修饰,这样这个变量就成为了常量,就随着类的加载而加载,这样的话,就不会出现生命周期不同的问题。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马