天天看点

类文件结构

一. 类文件结构

    Class文件格式采用一种类似于C语言结构体的伪结构来存储数据。

    这种伪结构中只有两种数据类型:无符号数和表。

        无符号数:基于基本的数据类型,以u1、u2、u4、u8来分别代表1个字节、2个字节、4个字节、8个字节的无符号数。可以用来描述数字、索引引用、数量值或按UTF-8编码构成字符串值。

类型 名称 数量 说明 作用
u4 magic 1 魔数 0xCAFEBABE 确定这个文件是否为一个能被虚拟机接受的Class文件
u2 minor_version 次版本号 高版本的JDK向下兼容以前版本的Class文件
major_version 主版本号
constant_pool_count 常量池容量计数值 容量计数是从1而不是0开始的
cp_info constant_pool constant_pool_count-1 常量池 存放字面量和符号引用,常量池中的每一项常量都是一个表
access_flags 访问标志 识别一些类或接口层次的访问信息
this_class 类索引 用于确定这个类的全限定名
super_class 父类索引 用于确定这个类的父类的全限定名(除Object外所有类的父类索引都不为0)
interfaces_count 接口索引数值
interfaces 接口索引集合 用来描述这个类实现了哪些接口
fields_count
field_info fields 字段表 用于描述接口或者类中声明的变量(不包含方法内部声明的局部变量)
methods_count
method_info methods 方法表
attributes_count
attribute_info attributes Class文件、字段表、方发表都可以携带自己的属性表集合、以用于描述某些场景专有信息

继续阅读