16

在 Java 8 之前,我们不能在本地类中使用非最终变量。但是现在他们允许最终以及有效的最终(谁的值没有改变),可以由本地类引用。我所知道的(如果我错了,请纠正我),他们不支持引用非最终值,因为可以更改值。那么,他们现在如何支持它以及为什么之前不支持它。

4

1 回答 1

26

事实上,情况根本没有改变。编译器稍微聪明一点,不再强迫你使用 final 关键字。

如果它检测到变量实际上是最终的,即只分配一次,并且以后再也不分配,那么一切都很好。如果它检测到它不是有效的最终版本,它会拒绝编译。

因此,它不会强迫您将变量设为 final,而是自动检测它。但是您仍然不能在内部类或 lambda 中使用非有效最终变量。

于 2014-05-10T12:13:57.703 回答