-
Code属性
Code属性就是存放方法体里面的代码,但是并非所有方法表都有Code属性,比如接口或者抽象方法
-
ConstantValue属性
ConstantValue属性表示一个常量字段的值,位于field_info
结构的属性表中
ConstantValue_attribute {
u2 attribute_name_index;
u4 attribute_length;
u2 constantvalue_index;
}
-
Deprecated属性
Deprecated属性是在JDK1.1为了支持注释中的关键词@deprecated而引入的
Deprecated_ attribute{
u2 attribute_name_ index;
u4 attribute_length;
}
-
InnerClasses属性
如果一个字节码文件的常量池中包含某个CONSTANT_Class_info
成员,且这个成员所表示的类或接口不属于任何一个包,那么这个文件的结构属性表中就必须含有对应的InnerClasses
属性,这个属性在JDK 1.1 中为了支持内部类和内部接口而引入的,位于ClassFile结构的属性表中。
-
LineNumberTable属性
该属性是可选变长属性,位于Code属性的属性表中,主要用来描述Java源码行号与字节码行号之间的对应关系。在Code属性的属性表中,该属性可以按照任意顺序出现,而且该属性不需要与源文件的行一一对应。
LineNumberTable_attribute {
u2 attribute_name_index:
u4 attribute_length:
u2 line_number_table_length;
{
u2 start_pc:// 虚拟机指令行号
u2 line_number:
} line_number_table[line_number_table_length]:
}
-
LocalVariableTable属性
该属性是可选变长属性,位于Code属性的属性表中,主要用来描述方法中的变量信息。在Code属性的属性表中,该属性可以按照任意顺序出现,每个局部变量最多只能有一个LocalVariableTable属性。
LocalVariableTable_attribute {
u2 attribute_name_index:
u4 attribute_length:
u2 local_variable_table_length:
{
u2 start_pc:
u2 length:
u2 name_index;
u2 descriptor_index;
u2 index;
} local_variable_table[local_variable_table_length]:
-
Signature属性
该属性是可选的定长属性,位于 ClassFile, field_info 或 method_info结构的属性表中。在 Java语言中,任何类、接口、初始化方法或成员的泛型签名如果包含了类型变量(Type Variables)或参数化类型(Parameterized Types),则Signature属性会为它记录泛型签名信息。
-
SourceFile属性
描述源码文件的信息,比如源码文件名称