为什么我们在匿名内部类中使用 final 关键字?
2022-09-01 20:55:45
我目前正在准备S(O)CJP,以及Sierra & Bates的书。
关于内部类(方法本地或匿名),他们说我们无法访问局部变量,因为它们位于堆栈上,而类位于堆上,并且可以由方法返回,然后尝试访问这些变量,这些变量位于堆栈上,但自方法结束以来不再存在...
众所周知,我们可以通过使用最终关键字来绕过它。这是他们在书中所说的,但他们并没有真正解释最终关键词的效果......据我所知,在方法局部变量上使用最终关键字并不能使其在堆上存活...那么,该类如何能够访问仍然存在于堆栈上的最终变量,而不可能再有堆栈???
我想在内部类中应该有这个最终局部变量的某种“副本”。既然值不能改变,为什么不复制这些信息呢?有人可以确认这一点或告诉我我是否错过了什么吗?