- 15
- 0
- 约3.58千字
- 约 3页
- 2017-08-13 发布于北京
- 举报
匿名内部类只能使用外部方法的局部常量
原因如下:
对象的生命周期与局部变量不同,局部变量的生命周期不超过方法的作用域,即方法执
行完毕后,方法栈中的所有局部变量都将被JVM 回收。而对象是在没有引用变量指向时,才
会由JVM 回收。若方法执行完毕后,匿名内部类仍由方法之外的引用变量指向,则该对象仍
会存在,但该对象又使用了方法中的某个局部变量,该局部变量是应该回收?还是不回收?
为解决这个矛盾。Java 会在匿名内部类中隐含地创建一个同类型的变量,将局部变量的值
赋值给该变量,则匿名内部类使用的变量是这个隐含的变量,该变量与匿名内部类的生命周
期相同。这就解决了以上的矛盾。即匿名内部类之外的方法执行完毕后,JVM 会正常的将方
法中的所有变量回收。而不影响匿名内部类。
因此,代码上我们看到的匿名内部类使用的是外部方法的局部变量,实际上使用的是那
个隐含的变量。
但这又会出现一个新的问题,若我们在匿名内部类中修改该变量的值,实际上是不会影
响外部方法中的局部变量,但代码上看上去,就会出现一个“变量”有两个值的情况。为此,
Java 硬性规定:这种变量的值不允许修改,所以就必须声明为常量。
【示例-6】
匿名内部类中若使用外部方法的局部变量,则该局部变量必须改为常量类型
package com.ityw.se
您可能关注的文档
- 5230凤凰刷机教程---亚太最新V12.0.089◆安安全全刷舞爱.doc
- 5Photoshop动画教程:打造漂亮动态水族箱.pdf
- 5_C++案例教程源代码.doc
- 5月11日婚礼.doc
- 5的乘法口诀个案.doc
- 5盆炎净治疗盆腔炎40例疗效分析.pdf
- 6.2 半日活动计划.doc
- 6.3 方法覆盖.doc
- 618天猫购入红米Note增强版智能手机1148元套餐开箱吐槽贴膜.pdf
- 68株医院感染葡萄球菌属细菌分布及耐药情况分析.pdf
- 安全生产管理员能力培训.pptx
- 咽异感症与心理健康促进.pptx
- 咽异感症与扁桃体炎的鉴别.pptx
- 咽异感症与抑郁症的关系.pptx
- 咽异感症与环境污染的关系.pptx
- 《生动的数据》课件-2025-2026学年沪教版(新教材)小学美术三年级下册.pptx
- 《校园微电影宣传策划》教学课件-2025-2026学年人美版(北京)(2024)初中美术七年级下册.pptx
- 《 春华秋实绘花鸟》教学课件-2025-2026学年人美版(北京)(2024)初中美术七年级下册.pptx
- 管理层安全培训策略.pptx
- 《把“大自然”穿在身上》教学课件-2025-2026学年人美版(北京)(2024)初中美术七年级下册.pptx
原创力文档

文档评论(0)