本地类可以访问java 8中的非final变量

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

实际上,情况根本没有改变。 编译器稍微聪明一些,并且不会强迫您再使用final关键字。

如果它检测到变量实际上是最终的,即只分配一次,而且从不跟随,那么一切都很好。 如果它检测到它不是最终的,它拒绝编译。

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