java类文件结构

java类文件结构

  • 文件结构

    特别注意:info结尾的为表格形式
  • magic
    魔数,判断是否为class文件
  • minor_version、major_version
    主版本号以及副版本号
  • constant_pool_count
    常量池大小
  • constant_pool[ ]
    常量池表格,表格存储格式如下

    tag对应类型表格
  • access_flags
    访问修饰标志
  • this_class
    类索引,this_class 的值必须是对 constant_pool 表中项目的一个有效索引值。constant_pool 表在这个索引处的项必须为 CONSTANT_Class_info 类型常量,表示这个 Class 文件所定义的类或接口。
  • super_class
    父类索引,对于类来说,super_class 的值必须为 0 或者是对 constant_pool 表中项目的一个有效索引值。如果它的值不为 0,那 constant_pool 表在这个索引处的项
    必须为 CONSTANT_Class_info 类型常量(§4.4.1),表示这个 Class 文件所定义的类的直接父类。当前类的直接父类。如果 Class 文件的 super_class 的值为 0,那这个 Class 文件只可能是定义的是
    java.lang.Object 类,只有它是唯一没有父类的类。
  • interfaces_count
    接口计数器,interfaces_count 的值表示当前类或接口的直接父接口数量。
  • interfaces[]
    接口表,interfaces[]数组中的每个成员的值必须是一个对 constant_pool 表中项目的一个有效索引值,它的长度为 interfaces_count。每个成员 interfaces[i] 必须为 CONSTANT_Class_info 类型常量(§4.4.1),其中 0 ≤ i <interfaces_count。在 interfaces[]数组中,成员所表示的接口顺序和对应的源代码中给定的接口顺序(从左至右)一样,即 interfaces[0]对应的是源代码中最左边的接口。
  • fields_count
    字段计数器,fields_count 的值表示当前 Class 文件 fields[]数组的成员个数。
  • fields[]
    字段表,fields[]数组中的每个成员都必须是一个 fields_info 结构(§4.5)的数据项,用于表示当前类或接口中某个字段的完整描述。fields[]数组描述当前类或接口
    声明的所有字段,但不包括从父类或父接口继承的部分。
    字段包含静态与实例变量
  • methods_count
    方法计数器
  • methods[]
    方法表,methods[]数组中的每个成员都必须是一个 method_info 结构的数据项,用于表示当前类或接口中某个方法的完整描述。
  • attributes_count
    属性计数器
  • attributes[]
    属性表,attributes 表的每个项的值必须是 attribute_info 结构
    Class 文件结构中的 attributes 表的项包括下列定义的属性:
    InnerClasses、EnclosingMethod、Synthetic、Signature、SourceFile,SourceDebugExtension、Deprecated、RuntimeVisibleAnnotations 、RuntimeInvisibleAnnotations以及BootstrapMethods属性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值