📚《深入浅出JVM字节码》
《Java虚拟机字节码:从入门到实战》的开源版本。作者通过自己的实战经验,整合出一套适合新手的高效学习教程。归纳并提炼知识点,制定合理路线,帮助读者更快掌握核心技术。
魔数,只是用来判断一个文件是否是一个class文件,魔数占四个字节,固定值为0xCAFEBABE,这个值永远不会改变,存储在class文件的前4个字节,如下图所示。
魔数解析的实现非常简单,我们只需要从class文件字节缓存中连续读取四个字节,将这四个字节转为一个U4对象,并赋值给ClassFile对象的magic字段,实现代码如下。
public class MagicHandler implements BaseByteCodeHandler {
// 排序排在第一个
@Override
public int order() {
return 0;
}
@Override
public void read(ByteBuffer codeBuf, ClassFile classFile) throws Exception {
// 连续读取四个字节并转为U4对象
classFile.setMagic(new U4(codeBuf.get(), codeBuf.get(),codeBuf.get(), codeBuf.get()));
if (!"0xCAFEBABE".equalsIgnoreCase(classFile.getMagic() .toHexString())) {
throw new Exception("这不是一个Class文件");
}
}
}
发布于:2021 年 07 月 24 日
作者: 吴就业
链接: https://github.com/wujiuye/JVMByteCodeGitBook
来源: Github Pages 开源电子书《深入浅出JVM字节码》(《Java虚拟机字节码从入门到实战》的第二版),未经作者许可,禁止转载!
📚目录
订阅
订阅新文章发布通知吧,不错过精彩内容!
输入邮箱,提交后我们会给您发送一封邮件,您需点击邮件中的链接完成订阅设置。