LocalVariableTable(LVT)不是Class文件的必要信息——它和LineNumberTable一样属于debug info(意味着有没有都不会影响程序的正确执行),使用“javac -g:none”编译之,Class文件就没有了局部变量表及其属性信息了。
写个例子,假设有这样一个类:
public class LocalVariablesTest {
public void test() {
int a = 9;
}
}
正常javac之后的class字节码文件javap -l之后形如:
public class LocalVariablesTest {
public LocalVariablesTest();
Code:
0: aload_0
1: invokespecial #8 // Method java/lang/Object."":()V
4: return
LineNumberTable:
line 2: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LLocalVariablesTest;
public void test();
Code:
0: bipush 9
2: istore_1
3: return
LineNumberTable:
line 5: 0
line 6: 3
LocalVariableTable:
Start Length