Class文件的訪問標志,類索引,父類索引,接口索引

引導

Class文件的基本結(jié)構(gòu)
Class文件的常量池
Class文件的訪問標志,類索引,父類索引,接口索引
Class文件的字段和方法

Class文件的訪問標志

訪問標志(access_flags) 在常量池(constant_pool)數(shù)組的后面,如下圖紅色框所示。

access_flags在class文件中的位置.png

Class文件的基本結(jié)構(gòu) 一文中已經(jīng)簡單的介紹了訪問標志(access_flags),它占 2 個字節(jié),總共 16 位。其每一位代表的信息及各訪問標志值對應(yīng)的排列方式如下圖所示。

access_flags排列方式.png
  1. 對于類,JVM 在將其編譯成 class 文件時,會將其低位第 6 位為設(shè)置為1;
  2. 對于接口,JVM 在將其編譯成 class 文件時,會將其低位第 10 位設(shè)置為1;
  3. 對于注解,JVM 再將其編譯成 class 文件時,會將其低位第 14 位設(shè)置為1;
  4. 對于枚舉,JVM 在將其編譯成 class 文件時,會將其低位第 15 位設(shè)置為1;
  5. 對于訪問權(quán)限為 public 的類或接口,JVM 在將其編譯成 class 文件時,會將其低位第 1 位設(shè)置為1;
  6. 對于接口或被 abstract 修飾的類,JVM在將其編譯成 class 文件時,會將其低位第 11 位設(shè)置為1;
  7. 對于被 final 修飾的類,JVM 在將其編譯成 class 文件時,會將其低位第 5 位設(shè)置為1;

舉個栗子。定義如下代碼。

public final class ClassFile {
}

根據(jù)上面的分析,ClassFile 類被 JVM 編譯成 class 文件后,其訪問標志(access_flags) 應(yīng)該為 ACC_PUBLIC、ACC_FINAL、ACC_SUPER,事實證明確實如此,下圖是 ClassFile 被編譯成的 class 文件。

ClassFile的class文件.png

Class文件的類索引

類索引(this_class)表示當前 class 文件描述的是哪個類。

類索引(this_class) 在訪問標志(access_flags)的后面,如下圖紅色框所示。

類索引(this_class).png

類索引(this_class)是一個指向常量池(constant_pool)數(shù)組的有效索引值。

舉個栗子。還是上面所定義的 ClassFile,其類索引及其對應(yīng)的常量池(constant_pool)數(shù)組所在的常量池項如下圖所示。

ClassFile的類索引.png

Class文件的父類索引

父類索引(super_class)表示當前 class 文件描述的類所屬的直接父類。

父類索引(super_class) 在類索引(this_class)的后面,如下圖紅色框所示。

父類索引(super_class).png

父類索引(super_class)是一個指向常量池(constant_pool)數(shù)組的有效索引值。

舉個栗子。還是上面所定義的 ClassFile,其父類索引及其對應(yīng)的常量池(constant_pool)數(shù)組所在的常量池項如下圖所示。

ClassFile的父類索引.png

Class文件的接口索引

接口計數(shù)器(interface_count)和接口索引(interfaces)數(shù)組描述了當前 class 文件描述的類所實現(xiàn)的接口信息。

接口索引在父類索引(super_class)的后面,如下圖紅色框所示。

接口索引在class文件中的位置.png

接口索引(interfaces)數(shù)組的每一項都是一個指向常量池(constant_pool)數(shù)組的有效索引值。

舉個栗子。定義如下代碼。

public class ClassFile implements A, B {
}

interface A {}

interface B {}
ClassFile對應(yīng)的interfaces.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容