一、 字段表集合
字段表(field_info) 用于描述接口或者类中声明的变量。 Java语言中的“字段”(Field) 包括类级变量以及实例级变量, 但不包括在方法内部声明的局部变量。 读者可以回忆一下在Java语言中描述一个字段可以包含哪些信息。 字段可以包括的修饰符有字段的作用域(public、 private、 protected修饰符) 、 是实例变量还是类变量(static修饰符) 、 可变性(final) 、 并发可见性(volatile修饰符, 是否强制从主内存读写) 、 可否被序列化(transient修饰符) 、 字段数据类型(基本类型、 对象、 数组) 、字段名称。 上述这些信息中, 各个修饰符都是布尔值, 要么有某个修饰符, 要么没有, 很适合使用标志位来表示。 而字段叫做什么名字、 字段被定义为什么数据类型, 这些都是无法固定的, 只能引用常量池中的常量来描述。 表1-1中列出了字段表的最终格式。
字段修饰符放在access_flags项目中, 它与类中的access_flags项目是非常类似的, 都是一个u2的数据类型, 其中可以设置的标志位和含义如表1-2所示。