Java-Javassist(二)

Class File Format

type descriptor remark
u4 magic 用来标识.class文件的开头
u2 minor_version minor_version与najor_version一起形成.class文件的版本号
u2 major_version
u2 constant_pool_count
cp_info constant_pool[constant_pool_coun-1] Java字节码中,有一个常量池,用来存放不同类型的常量,常量池中的项是铜鼓cp_info的类型来表示的
u2 access_flags 指定类或接口的访问权限
u2 this_class 指向constant pool的索引值,该值必须是CONSTANT_Class_info类型,指定当前字节码定义的类或接口
u2 super_class 指向constant pool的索引值,该值必须是CONSTANT_Class_info类型,指定当前字节码定义的类或接口的直接父类,只有Object类才没有父类,此时索引值为0,并且父类不能是final类型。接口的父类都是Object类型
u2 interfaces_count
u2 interfaces[interfaces_count] interfaces数组记录所有当前类或接口直接实现的接口。数组中的每一项都是指向constant pool的索引值,该值必须是CONSTANT_Class_info类型,数组中接口的顺序和源代码中接口定义的顺序相同
u2 fields_count
field_info fields[fields_count] fields数组记录了类或接口中的所有字段,包括实例字段和静态字段,但不包含父类或父接口中定义的字段。数组中每项都是field_info类型值,它描述了字段的详细信息,如名称、描述符、字段中的attribute等
u2 methods_count
method_info methods[methods_count] methods数组记录了类或接口中的所有方法,包括实例方法、静态方法、实例初始化方法和类初始化方法,但不包括父类或接口中定义的方法。methods数组中每项都是method_info类型值,它描述了方法的详细信息,如名称、描述符、方法中的attribute等
u2 attributes_count
attribute_info attributes[attributes_count] attributes数组记录了类或接口相关的所有Attribute项(和字节相关的Attributes在field_info的attributes中,和方法相关的Attributes在method_info的attributes中,和字节码相关的Attributes在Code Attribute的attributes中)。attributes数组中的每项都是attribute_info类型,它描述了Attribute的名称、详细信息等。该attributes数组描述了ClassFile的一些额外信息。JVM必须忽略它不能识别的Attribute,而且那些Attribute不能识别的Attribute也不能影响class文件的语义。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • /Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home...
    光剑书架上的书阅读 4,006评论 2 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 网络阶段# 应用程序如何连接互联网## 1.基于HTTP协议 HTTP:超文本传输协议(Hyper - Text ...
    Lambenz阅读 213评论 0 0
  • 一介布衣子阅读 323评论 0 0