局部类可以访问 java 8 中的非最终变量
2022-09-03 05:36:53
在Java 8之前,我们无法在局部类中使用非最终变量。但是现在他们允许最终和有效的最终(谁的值没有改变),可以被本地类引用。我所知道的(如果我错了,请纠正我),他们不支持引用非最终值,因为有值可以更改。那么,他们现在如何支持它以及为什么之前不支持它。
在Java 8之前,我们无法在局部类中使用非最终变量。但是现在他们允许最终和有效的最终(谁的值没有改变),可以被本地类引用。我所知道的(如果我错了,请纠正我),他们不支持引用非最终值,因为有值可以更改。那么,他们现在如何支持它以及为什么之前不支持它。
实际上,情况根本没有改变。编译器只是更聪明一些,并且不会再强迫你使用最终关键字。
如果它检测到变量实际上是最终的,即只分配一次,并且从不分配,那么一切都很好。如果它检测到它不是有效的最终版本,它将拒绝编译。
因此,它不是强迫您使变量最终确定,而是自动检测它。但是,您仍然无法在内部类或 lambda 中使用非有效的最终变量。