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

Ash*_*hok 16 java local-class java-8

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

JB *_*zet 26

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

如果它检测到的变量是有效的决赛中,即,分配的只有一次,也绝不之后,一切都很好.如果它检测到它不是最终的,它就会拒绝编译.

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