我是靠谱客的博主 激动大象,最近开发中收集的这篇文章主要介绍匿名类中的方法为什么不能修改外部类的局部变量?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

匿名类中的方法为什么不能修改外部类的局部变量?

  1. 首先局部变量是定义在栈中的,一旦超出其作用范围就立马销毁释放。而匿名类中的方法是跟匿名对象绑定的,通过new实例化,放在堆中,只要java垃圾回收线程不释放它,它就长期存在。

  2. 因此在匿名类调用外部类的普通局部变量就有可能出错,因为该局部变量可能已经被释放。所以为了能让匿名类也能方便使用外部类中局部变量。java干脆直接把在匿名类中使用的外部类中的局部变量变成final类型,因为final类型为常量也是放在堆中的。这样当匿名类调用该局部变量时,就不会出现上述局部变量不存在的情况,从而导致程序出错。

  3. 所以当外部内的局部变量在匿名类被使用。它不仅不能在匿名类中被修改,还且也不能在外部类中被修改。因为它已经成为了隐式的常量。

    如有不对,欢迎指正,大家一起进步,冲冲冲!!!

最后

以上就是激动大象为你收集整理的匿名类中的方法为什么不能修改外部类的局部变量?的全部内容,希望文章能够帮你解决匿名类中的方法为什么不能修改外部类的局部变量?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部