page contents

谈谈你对类文件结构的理解?有哪些部分组成?

轩辕小不懂 发布于 2022-02-09 13:51
阅读 614
收藏 0
分类:Java开发
3016
Nen
Nen
- 程序员

Class 文件没有任何分隔符,严格按照上面结构表中的顺序排列。无论是顺序还是数量,甚至于数据存储的字节序这样的细节,都是被严格限定的,哪个字节代表什么含义,长度是多少,先后顺序如何,都不允许改变。

1、魔数(magic):每个 Class 文件的头 4 个字节称为魔数(Magic Number),它的唯一作用是确定这个文件是否为一个能被虚拟机接受的Class 文件,即判断这个文件是否符合 Class 文件规范。

2、文件的版本:minor_version 和 major_version。

3、常量池:constant_pool_count 和 constant_pool:常量池中主要存放两大类常量:字面量(Literal)和符号引用(Symbolic References)。

4、访问标志:access_flags:用于识别一些类或者接口层次的访问信息。包括:这个 Class 是类还是接口、是否定义了 Public 类型、是否定义为 abstract 类型、如果是类,是否被声明为了 final 等等。

5.类索引、父类索引与接口索引集合:this_class、super_class和interfaces。

6、字段表集合:field_info、fields_count:字段表(field_info)用于描述接口或者类中声明的变量;fields_count 字段数目:表示Class文件的类和实例变量总数。

7、方法表集合:methods、methods_count

8、属性表集合:attributes、attributes_count

请先 登录 后评论