字段表数据的解读

2021-08-10  本文已影响0人  Shaw_Young

fields [](字段表)

类型 名称 含义 数量
u2 access_flags 访问标志 1
u2 name_index 字段名索引 1
u2 descriptor_index 描述符索引 1
u2 attributes_count 属性计数器 1
attribute_info attributes 属性集合 attributes_count

字段表访问标识

我们知道,一个字段可以被各种关键字去修饰,比如:作用域修饰符(public、private、protected)、static修饰符、final修饰符、volatile修饰符等等。因此,其可像类的访问标志那样,使用一些标志来标记字段。字段的访问标志有如下这些:

标志名称 标志值 含义
ACC_PUBLIC 0x0001 字段是否为public
ACC_PRIVATE 0x0002 字段是否为private
ACC_PROTECTED 0x0004 字段是否为protected
ACC_STATIC 0x0008 字段是否为static
ACC_FINAL 0x00010 字段是否为final
ACC_VOLATILE 0x0040 字段是否为volatile
ACC_TRANSIENT 0x0080 字段是否为transient
ACC_SYNCHETIC 0x1000 字段是否为由编译器自动产生的
ACC_ENUM 0x4000 字段是否为enum

字段名索引

根据字段名索引的值,查询常量池中的指定索引即可。

描述符索引

描述符的作用是用来描述字段的数据类型、方法的参数列表(包括数量、类型以及顺序)和返回值。根据描述符规则,基本数据类型(byte,char,double,float,int,long,short,boolean)及代表无返回值的void类型都用一个大写字符来表示,而对象则用字符L加对象的全限定名来表示,如下所示:

字符 类型 含义
B byte 有符号字节型数
C char Unicode字符,UTF-16编码
D double 双精度浮点数
F float 单精度浮点数
I int 整型数
J long 长整型
S short 有符号短整数
Z boolean 布尔值true/false
L ClassName; reference 一个名为Classname的实例
[ reference 一个一维数组

属性表集合

一个字段还可能拥有一些属性,用于存储更多的额外信息。比如初始化值、一些注释信息等。属性个数存放在attribute_count,属性具体内容存放在attributes数组中。

梦想很模糊,去追,它会渐变清晰。青春励志,奋斗下去别放弃。

上一篇 下一篇

猜你喜欢

热点阅读