fields:字段表是指向常量池索引集合,描述了每个字段的完整信息。
image.png
1,父类定义的变量是不会存在于子类的field表结构中的。
2,Java语言规范中,不允许同一个类中有重名的字段,但是Java虚拟机规范表示在一个类中,只要有不同的方法描述符就可以共存,比如两个重名但是类型不同对Class文件来说是合法的。
字段表可以看作是一个数组,每一个元素都是field_info,注意区分field_info和CONSTANT_Fieldref_info的结构。
field_info结构:
image.png
CONSTANT_Class_info结构:
image.png
应该说,field_info中可能会引用CONSTANT_Class_info。
image.png
name_index:字段名索引
根据字段名索引的值,查询常量池中的制定索引项即可。
descriptor_index:描述符索引
描述符的作用是用来描述字段的数据类型、方法的参数列表(数量、类型及顺序)和返回值。
(字段的)属性表集合:
image.png