????ClassFile?????16????????????????械?????????????????锟�?
????(1) magic
???????Class??????4??????????????????magic number??: 0xCAFEBABE????????????????????????????Java Class??????Java Class??????????????????????0xCAFEBABE??????????????Java Class????????????????娣禞??????Java?????“Oak”?????????????????????????????Java????????????????????????????????J
????(2) minor_version??major_version
????Class?????????4??????????巍????姹�????????懈??????姹�??????写?姹�???Java?????????????Class????????Class?????姹�???????Java?????????????????效??围??Java??????????????Class?????????J2SE5.0?姹�????????????????J2SE6.0?姹�????????????????Class?????
????(3) constant_pool_count
?????姹�??????????constant_pool_count????????????????????????????????????Class????谐??????斜???????????????????????????????0??constant_pool??????????????????Class?????constant_pool?斜??校?????????????Java??????????????????????????斜????????constant_pool_count-1?????????????????????????1??constant_pool_count-1??
??????????????屑????????????????锟�?????????constant_pool?????????斜????constant_pool[ ]???????????????????斜??械?????????????(???)????些?????????????????????????cp_type???????
????cp_type
???????????                                ????
????CONSTANT_Class                           7
????CONSTANT_Fieldref                        9
????CONSTANT_Methodref                       10
????CONSTANT_InterfaceMethodref              11
????CONSTANT_String                           8
????CONSTANT_Integer                          3
????CONSTANT_Float                            4
????CONSTANT_Long                             5
????CONSTANT_Double                           6
????CONSTANT_NameAndType                      12
????CONSTANT_Utf8                              1
????(4) constant_pool[ ]
????constant_pool_count????????constant_pool[ ]???????????斜?????写娲�???ClassFile???????????????????????????????????????final????????????????????????Java Class????校?????????????????cp_info??????????????????斜?????constant_pool_count-1???????????????cp_info????????constant_pool[ ]???椤�?????constant_pool_count-1??constant_pool??????????????????????????????????????????????????????????????
????cp_info
????cp_info???tag?????????????byte???????????????cp_info?????????????????tag?????????
???????????????cp_info????????????????Class????校???????????芯?????????CONSTANT_Xxxx_info??constant_pool??????????????cp_info???tag?????????????????????????cp_info?????info[]???????????????纾珻ONSTANT_Class_info???info[]???“u2 name_index”????CONSTANT_Utf8_info???info[]???“u2 length; u1 bytes[length];”?????????????cp_info?????????????小?????????????????????????小????????????????斜??械????????????????????????????????斜???小?????????Class????校????????斜???????????????????
??????cp_info?????cp_type????????????????cp_info????tag(???)?????1????????cp_info?????CONSTANT_Utf8_info???????cp_info????tag?????3???????cp_info?????CONSTANT_Integer_info???????????????????些????????????JVM Spec??(2nded)???????????Inside JVM??(2nded)????????
????(5) access_flags
???????????????????????access_flags??access_flags?????????Java??????些??????????????纾�?????????????卸????????????????????????????????????????校????????些???畏???????????????????????????????access_flags??????Java???????????????????????????(mask???????????????access_flags????????蟹?????????????????未????????位??Class????卸????????0?????纾�??access_flags?????0x0001???????Java??????????????ACC_PUBLIC????access_flags?????0x0011???????Java??????????????ACC_PUBLIC??ACC_FINAL?????????????????位?????????0x0011?????????????)??
???????Java?????????access_flags????????卤??????
????access_flags
???????????         ?           ????
????ACC_PUBLIC     0x0001   ?????public?????????????????
????ACC_FINAL      0x0010   ?????final??????????????
????ACC_SUPER      0x0020   ??invokespecial????????????
????ACC_INTERFACE  0x0200   ????????????????????????
????ACC_ABSTRACT   0x0400   ?????abstract????????????
?????????????????????????Java?????????????斜???械??????????????????械???????薪????????????????????JVM Spec??(2nded)??