解析super_class
的时候也是需要特别注意,当解析java.lang.Object
时super_class
的值为0,常量池中不包含索引为0的对象,所以需要直接将父类名称设置为java/lang/Object
。
// u2 super_class;
int superClassIndex = dis.readUnsignedShort();
// 当解析Object类的时候super_class为0
if (superClassIndex != 0) {
this.superClass = (String) getConstantPoolValue(superClassIndex);
} else {
this.superClass = "java/lang/Object";
}
解析结果:"superClass": "java/lang/Object",
。