6

诸如局部变量是否“最终”存储在 Java 字节码中的信息在哪里?我知道对于字段(全局变量)和方法,这些可以在访问标志位中找到,但似乎无法在局部变量表中找到等效项。

我对这个问题很感兴趣,因为我正在使用 BCEL 检查局部变量是否为最终变量,并在 AccessFlags 类中找到了字段、方法和类的等价物。

提前致谢。

4

3 回答 3

4

局部变量的最终确定性由编译器检查,不会进入字节码。此信息在运行时不需要,因此不存储在字节码中。

JVM 以相同的方式处理最终和非最终局部变量。

于 2011-10-09T14:10:25.077 回答
2

简短的回答 - 你不能。局部变量的“最终”访问标志仅告诉编译器不能重新分配变量值。请参阅JVM 规范的第 4.7.13 节。

于 2011-10-09T14:15:29.323 回答
1

我不相信您可以确定final局部变量的性;这可以通过编写一个带和不带final关键字的小方法并比较字节码来证明。

于 2011-10-09T14:13:03.263 回答