诸如局部变量是否在Java字节码中存储的“最终”信息在哪里?我知道对于字段(全局变量)和方法,这些可以在访问标志位中找到,但似乎无法在局部变量表中找到等效项。
我对这个问题很感兴趣,因为我正在使用BCEL来检查局部变量是否是最终的,并找到了AccessFlags类中的字段,方法和类的等价物。
提前致谢。
答案 0 :(得分:3)
编译器检查局部变量的最终结果,而不是字节码。此信息在运行时不是必需的,因此不存储在字节码中。
JVM以相同的方式处理final和non-final局部变量。
答案 1 :(得分:1)
简短回答 - 你不能。局部变量的'final'访问标志只告诉编译器不能重新赋值变量值。请参阅JVM specification的第4.7.13节。
答案 2 :(得分:0)
我不相信你可以确定局部变量的final
;这可以通过编写一个带有和不带final
关键字的小方法并比较字节码来证明。