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

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

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值