!!一个class文件——用于描述一个类或接口
magic:魔数,用来判断一个文件是不是class文件,class文件的魔术为0xCAFEBABY
版本号。
constant_pool_count:常量池中有constant_pool_count-1个常量
常量池:储存常量,索引从1——contant_pool_count-1,存储的常量有个共同特征——每个常量的第一个字节为tag byte,用于识别常量的类型
access_flag:访问标志
this_class:类索引,为一个整数值(constant_pool中的有效索引)。例如,this_class为5,那么类索引就表示常量池中索引为5处的常量(这个常量必须为Class_info结构),这个Class_info常量表示class文件定义的类或接口
super_class:父类索引,也是一个整数值(0或constant_pool中的有效索引),例如,super_class为3,那么父类索引表示常量池中索引为3处的常量(这个常量必须为Class_info结构),这个Class_info常量表示class文件定义的类或接口的父类
interface_count:表示接口的数量
interfaces[ ]:interfaces[0]——interfaces[interface_count-1]存储的都是整数值,例如,interfaces[2]的值为6,那么这个class文件表示的类,它的第三个接口为常量池中索引为6处的常量(这个常量必须为Class_info结构)
field_count:fields[ ]中的field_info数量
fields[ ]:字段表,含有field_count个field_info结构。一个field_info结构表示某个字段的完整描述,fields[ ]表示class文件表示的类中所有的字段。
method_count:methods[ ]中的method_info数量
methods[ ]:方法表,含有method_count个method_info结构,一个method_info结构表示某个方法的完整描述,method_info结构可以表示类或接口中定义的所有方法,包括实例方法,类方法,实例初始化方法,类或接口初始化方法。methods[ ]只表示当前类或接口中的所有方法,不包含从父类或父接口中继承的方法。
attribute_count:表示attributes[ ]中attribute_info结构的数量
attributes[ ]:属性表,attribute_count个attribute_info结构
原文:https://www.cnblogs.com/huangxiangqi/p/13089338.html