class文件的组成:
1)魔数,确定当前文件是一个能被虚拟机接受的Class文件
2)Class文件的版本号
3)次版本号
4)主版本号
5)常量池入口,常量池中主要存放两大类常量,字面量和符号引用。字面量比较接近于Java语言层面的常量概念,如文本字符串,声明为final的常量值等,而符号引用是属于编译原理方面的概念,包括三类常量:类和接口的全限定名、字段的名称和描述符、方法的名称和描述符
6)访问标志,这个标志用于识别一些类或者接口层次的访问信息。包括:这个Class是类还是接口、是否为public、是否定义为abstract,如果是类的话,是否被声明为final
7)类索引,一个u2类型数据
8)父类索引,一个u2类型数据
9)接口索引,一个u2类型数据集合
10)字段表集合,用于描述接口或者类中声明的变量,字段包括类级别变量以及实例级变量,但不包括方法内部的局部变量。
11)方法表集合
12)属性表集合,在Class文件、字段表、方法表都可以携带自己的属性表集合,以用于描述某些场景专有的信息
1)魔数,确定当前文件是一个能被虚拟机接受的Class文件
2)Class文件的版本号
3)次版本号
4)主版本号
5)常量池入口,常量池中主要存放两大类常量,字面量和符号引用。字面量比较接近于Java语言层面的常量概念,如文本字符串,声明为final的常量值等,而符号引用是属于编译原理方面的概念,包括三类常量:类和接口的全限定名、字段的名称和描述符、方法的名称和描述符
6)访问标志,这个标志用于识别一些类或者接口层次的访问信息。包括:这个Class是类还是接口、是否为public、是否定义为abstract,如果是类的话,是否被声明为final
7)类索引,一个u2类型数据
8)父类索引,一个u2类型数据
9)接口索引,一个u2类型数据集合
10)字段表集合,用于描述接口或者类中声明的变量,字段包括类级别变量以及实例级变量,但不包括方法内部的局部变量。
11)方法表集合
12)属性表集合,在Class文件、字段表、方法表都可以携带自己的属性表集合,以用于描述某些场景专有的信息