标签: java inner-classes
最终局部变量(在方法内)的生命是否与其他局部变量相同,即一旦方法调用结束并且堆栈被删除,它们是否会死亡? 如果是这样,那么我们怎样才能在方法本地类中使用最终局部变量,但其他局部变量不能? 请澄清我的疑问。
答案 0 :(得分:2)
当您创建匿名内部类的实例时,您实际上正在创建一个闭包,这是一种特殊的语言结构,据说可以“关闭”局部变量。引擎盖下发生的事情是将最终变量的值复制到匿名实例的合成实例变量中。像往常一样,堆栈分配的最终变量本身会随着方法而死。