天天看點

類檔案結構

一. 類檔案結構

    Class檔案格式采用一種類似于C語言結構體的僞結構來存儲資料。

    這種僞結構中隻有兩種資料類型:無符号數和表。

        無符号數:基于基本的資料類型,以u1、u2、u4、u8來分别代表1個位元組、2個位元組、4個位元組、8個位元組的無符号數。可以用來描述數字、索引引用、數量值或按UTF-8編碼構成字元串值。

類型 名稱 數量 說明 作用
u4 magic 1 魔數 0xCAFEBABE 确定這個檔案是否為一個能被虛拟機接受的Class檔案
u2 minor_version 次版本号 高版本的JDK向下相容以前版本的Class檔案
major_version 主版本号
constant_pool_count 常量池容量計數值 容量計數是從1而不是0開始的
cp_info constant_pool constant_pool_count-1 常量池 存放字面量和符号引用,常量池中的每一項常量都是一個表
access_flags 通路标志 識别一些類或接口層次的通路資訊
this_class 類索引 用于确定這個類的全限定名
super_class 父類索引 用于确定這個類的父類的全限定名(除Object外所有類的父類索引都不為0)
interfaces_count 接口索引數值
interfaces 接口索引集合 用來描述這個類實作了哪些接口
fields_count
field_info fields 字段表 用于描述接口或者類中聲明的變量(不包含方法内部聲明的局部變量)
methods_count
method_info methods 方法表
attributes_count
attribute_info attributes Class檔案、字段表、方發表都可以攜帶自己的屬性表集合、以用于描述某些場景專有資訊

繼續閱讀