【发布时间】:2011-08-16 10:28:42
【问题描述】:
我目前正在准备 S(O)CJP,以及 Sierra 和 Bates 书。
关于内部类(方法本地或匿名),他们说我们无法访问局部变量,因为它们存在于堆栈上,而类存在于堆上并且可以由方法返回然后尝试访问到堆栈上的这些变量,但由于方法结束后不再存在......
众所周知,我们可以通过使用 final 关键字绕过这一点。这是他们在书中所说的,但他们并没有真正解释 final 关键字的作用是什么...... 据我所知,在方法局部变量上使用 final 关键字并不能让它存在于堆中......那么该类如何能够访问仍然存在于堆栈中的 final 变量,而可能没有更多的堆栈???
我想内部类中应该有这个最终局部变量的某种“副本”。既然值不能改变,为什么不复制这个信息...... 有人可以确认一下或告诉我是否遗漏了什么吗?
【问题讨论】:
标签: java oop jakarta-ee scjp