为什么Java匿名内部类的方法中用到的局部变量都必须定义为final

 我来答
就是小厉1U
2017-05-16 · TA获得超过495个赞
知道小有建树答主
回答量:250
采纳率:100%
帮助的人:73.8万
展开全部
保证局部变量在匿名内部类内外都不会被修改。

因为匿名内部类内部,实际上是复制了一份局部变量,然后在匿名内部类中使用。如果不设置为final,局部变量在外部被修改,会导致与匿名内部类之内的副本不一致,逻辑上说不通。所以Java虚拟机这么设计,强制设置局部变量为final,语义上保持一致性。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式