常量池表的解读

创建MethodrefInfo类刻画CONSTANT_Methodref_info
public class MethodrefInfo {
// 类信息(其实也只有类名信息)
ClassInfo classInfo;
// 名字和描述符
NameAndTypeInfo nameAndTypeInfo;
}
public class ClassInfo {
// 类名
Utf8Info className;
}
public class NameAndTypeInfo {
// 名字
Utf8Info name;
// 描述符
Utf8Info descriptor;
}
// 相当于JVM层次的String类型
public class Utf8Info {
// 字节数组长度
int byteArrayLengths;
// 字符串长度
int strLengths;
// 字符串字面量
String string;
}
类访问标识
类接口索引, 父类接口索引和接口索引集合


字段表集合的解读
public class FieldInfo{
//字段名
Utf8Info name;
// 字段的描述符
Utf8Info descriptor;
// 2字节的访问标志, 各标识位的含义和类访问标识的含义相同
byte[] accessFlag;
// 字段中的属性集合
AttributeInfo[] attributes;
}
方法表集合的解读
属性表集合的解读
字段的属性用于存储一些额外的信息, 例如初值化值, 注释信息等
常量字段可以看到ConstantValue属性
字节码指令附录
| 字节码指令 | 含义与解释 |
|---|---|
ldc |
从字符串常量池中加载数据 |
astore_3, astore 4 |
前者直接作为一条指令, 而后者是astore指令加上操作数4. 因为1,2,3常用, 所以将其直接作为整合到操作码中, 达到加速效果 |
dup |
复制 |