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

时间:2014-05-10 12:03:27

标签: java java-8 local-class

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

1 个答案:

答案 0 :(得分:26)

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

如果它检测到变量有效最终,即仅分配一次,而且从未过后,则一切都很好。如果它检测到它没有被有效地终结,它就拒绝编译。

因此,它不是强迫你做一个变量final,而是自动检测它。但是你仍然不能在内部类或lambda中使用非有效最终变量。