目錄
基本結構解析
常量池
常量池簡介
如何閱讀Class文件中的常量池信息
基本結構解析
Magic(魔數)
Magic的唯一作用是確定這個文件是否為一個能被虛擬機所接受的class 文件。魔數值固定為0xCAFEBABE,不會改變。
常量池
常量池簡介
下圖是反編譯過后的字節碼文件中我們找到的常量池的部分。
?可見常量池數量是從1到52,共52個常量,了解了常量池的數量,接下去我們看整個常量池的內容怎么讀,即下圖紅線部分。
如何閱讀Class文件中的常量池信息
?不同的常量類型,用tag來區分的,它后面對應的info 結構是不一樣的。
?比如下圖的常量07。
?根據7去找對應的常量類型,發現是CONSTANT_Class。
?接著去找CONSTANT_Class的info結構。
也就是07后面的兩位,即0002是它的名字的索引,即在常量池中的索引。
即下圖全限定名的索引為2。
這樣07就讀完了,我們接著往下看后面的01。
同理,通過01找到常量類型。
?找到它對應的結構。
發現接下去的兩位是它的長度,即十六進制的0019,也就是十進制的25,從0019往后數25個到6F的位置,右邊對應的就是它的全限定名。接著往下看就又是07,這樣多看幾次就學會看了。