&引用;“伪造”;javap本地表输出中的条目
我正在使用&引用;“伪造”;javap本地表输出中的条目,java,javap,Java,Javap,我正在使用javap研究为我的一个类生成的代码,并注意到以下输出: ... frame_type = 255 /* full_frame */ offset_delta = 11 locals = [ class Test, double, int, double, double, bogus, bogus, int, int, class "[D" ] stack = [] ... locals表中那些“虚假”类型/变量条目的含义是什么?它们是如何引起的?它们对生成的代码有什么影
javap
研究为我的一个类生成的代码,并注意到以下输出:
...
frame_type = 255 /* full_frame */
offset_delta = 11
locals = [ class Test, double, int, double, double, bogus, bogus, int, int, class "[D" ]
stack = []
...
locals
表中那些“虚假”类型/变量条目的含义是什么?它们是如何引起的?它们对生成的代码有什么影响
该类文件是使用Eclipse 3.7编译器生成的,javap
来自OpenJDK-1.6b22。我在查看文档时发现:
伪造的
公共静态最终类型伪
表示不可访问的值。代码无法访问此值
类型表示。它发生在字节码重用局部变量表时
具有非mergable类型的位置。一个例子是编译代码
对于一个分支中的基元类型使用相同的位置
另一分支中的引用类型
我认为这种模糊性是导致
locals
表中出现“虚假”条目的原因…您能分享这种方法的来源吗?也许还有字节码?我猜它可能来自foreach、switch(enum)或其他需要编译器自动生成代码的特性之一。