Does class文件格式提供支持final关键字与变量一起使用吗?
或者它只是从代码中推断出变量的有效最终性,然后 JIT 编译器基于它执行优化?
Here https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html,在类文件格式文档中,他们提到了final关键字,但仅在与它一起使用的情况下最后一块 and 最后一堂课.
没有什么关于最终变量.
不,类文件中没有编码此类信息。
您可以通过使用以下命令编译源文件来轻松验证这一点final
局部变量并且没有final
- 结果类别将是相同的。
然而,Java 8 添加了MethodParameters https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.24记录有关方法参数的名称和访问标志的信息的属性。这意味着,您可以检查方法参数是否为final
or not.
即时编译器不需要了解final
当地人 - 他们可以轻松确定任何表达式的实际范围。即使变量不是最终的,例如
int x = 1;
// ... code A ...
x = 2;
// ... code B ...
编译器将优化代码A
as if x
总是1
,以及代码B
as if x
总是2
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)