黑马程序员技术交流社区

标题: 局部内部类 [打印本页]

作者: 付剑翊    时间: 2014-8-30 10:02
标题: 局部内部类
为什么局部内部类的方法没有办法访问内部类所在的局部变量?
作者: 【灰太狼】    时间: 2014-8-30 20:47
你的意思是内部类中不能访问类中的局部变量是吗?

这是生命周期的问题。
内部类的声明周期是和类一样的,声明周期长。
而局部变量,是实例化的时候才会加载,生命周期短,
你在内部累中就访问这个局部变量,它可能还没“出生”呢,如果你就非要访问,那么就需要让这个局部变量的生命周期变长,至少和类的生命周期一样,可以加finl修饰一下,变为常量,就可以访问了。
作者: 付剑翊    时间: 2014-8-30 22:07
【灰太狼】 发表于 2014-8-30 20:47
你的意思是内部类中不能访问类中的局部变量是吗?

这是生命周期的问题。

嗯嗯,谢谢~
作者: 华谦    时间: 2014-8-30 23:16
加静态貌似可以
作者: 张涛的狂怒    时间: 2014-8-31 14:48
恩,一楼,回答的很好
作者: yingsun    时间: 2014-9-1 01:57
学完又忘了。温故知新,加油!
作者: 付剑翊    时间: 2014-9-2 22:44
【灰太狼】 发表于 2014-8-30 20:47
你的意思是内部类中不能访问类中的局部变量是吗?

这是生命周期的问题。

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




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