【发布时间】:2014-05-10 12:03:26
【问题描述】:
在 Java 8 之前,我们无法在本地类中使用非最终变量。但是现在他们允许最终以及有效的最终(谁的值没有改变),可以由本地类引用。我所知道的(如果我错了,请纠正我),他们不支持引用非最终值,因为可以更改值。那么,他们现在如何支持它以及为什么之前不支持它。
【问题讨论】:
标签: java java-8 local-class
在 Java 8 之前,我们无法在本地类中使用非最终变量。但是现在他们允许最终以及有效的最终(谁的值没有改变),可以由本地类引用。我所知道的(如果我错了,请纠正我),他们不支持引用非最终值,因为可以更改值。那么,他们现在如何支持它以及为什么之前不支持它。
【问题讨论】:
标签: java java-8 local-class
实际上,情况根本没有改变。编译器稍微聪明一点,不再强迫你使用 final 关键字。
如果它检测到变量有效是final的,即只分配一次,以后再也不分配,一切都很好。如果它检测到它不是有效的 final,它会拒绝编译。
因此,它不会强制您将变量设为 final,而是自动检测它。但是您仍然不能在内部类或 lambda 中使用非有效最终变量。
【讨论】: