⑨. 属性表集合
- ①. 属性计数器:attributes_count的值表示当前class文件属性表的成员个数。属性表中每一项都是一个attribute_info结构
- ②. 属性的通用格式
③. Code属性
(Code属性就是存放方法体里面的代码。但是,并非所有方法表都有Code属性。像接口或者抽象方法,他们没有具体的方法体,因此也就不会有Code属性了)
Code属性表的结构,如下图:
④. LineNumberTable属性
LineNumberTable 属性是可选变长属性,位于 Code结构的属性表
LineNumberTable属性是用来描述Java源码行号与字节码行号之间的对应关系。这个属性可以用来在调试的时候定位代码执行的行数(start_pc,即字节码行号;line_number,即Java源代码行号)
在 Code 属性的属性表中,LineNumberTable 属性可以按照任意顺序出现,此外,多个 LineNumberTable属性可以共同表示一个行号在源文件中表示的内容,即 LineNumberTable 属性不需要与源文件的行一 一对应
⑤.LocalVariableTable属性
(LocalVariableTable 是可选变长属性,位于 Code属性的属性表中。它被调试器用于确定方法在执行过程中局部变量的信息。在 Code 属性的属性表中,LocalVariableTable 属性可以按照任意顺序出现。Code 属性中的每个局部变量最多只能有一个 LocalVa riableTable 属性)
⑥. SourceFile属性