我正在准备S(O)CJP考试,使用的教材是 Sierra & Bates。
关于内部类(方法局部或匿名类),他们说我们无法访问局部变量,因为它们存在于堆栈上,而类存在于堆上,并且可能被方法返回,然后尝试访问这些已不再存在于堆栈上的变量,因为该方法已经结束...
众所周知,我们可以通过使用final关键字来绕开这个问题。这就是书中所说的,但他们并没有真正解释final关键字的作用... 据我所知,在方法局部变量上使用final关键字并不会使它存在于堆上...那么类如何能够访问仍然存在于堆栈上的final变量,而此时可能已经没有堆栈了???
我猜测应该有一种在内部类中“复制”此final局部变量的方法。既然值不会改变,为什么不复制这些信息...... 请问是否有人可以确认这一点或告诉我是否遗漏了什么?