您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關JVM虛擬機中Class文件的訪問標志是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
常量池結束之后,緊接著的兩個字節代表訪問標志,這個標志用于識別一些類或者接口層次的訪問信息,包括:這個Class是接口還是類;是否被定義為public類型;是否定義為abstract類型;如果是類的話,是否被聲明為final等。
access_flages中共有兩個字節(16位)可以使用,沒有使用到的標志為要求一律為0。如果有多個訪問標志,那通過“OR”的方式組合在一起。
標志名稱 | 標志值 | 含義 |
---|---|---|
ACC_PUBLIC | 0x00 01 | 是否為Public類型 |
ACC_FINAL | 0x00 10 | 是否被聲明為final,只有類可以設置 |
ACC_SUPER | 0x00 20 | 是否允許使用invokespecial字節碼指令的新語義. |
ACC_INTERFACE | 0x02 00 | 標志這是一個接口 |
ACC_ABSTRACT | 0x04 00 | 是否為abstract類型,對于接口或者抽象類來說,次標志值為真,其他類型為假 |
ACC_SYNTHETIC | 0x10 00 | 標志這個類并非由用戶代碼產生 |
ACC_ANNOTATION | 0x20 00 | 標志這是一個注解 |
ACC_ENUM | 0x40 00 | 標志這是一個枚舉 |
定義一個類:
public class HelloWord {}
00 21可以推斷是由ACCPUBLIC和ACCSUPER通過OR組合而成。
通過命令javap -verbose HelloWord.class來查看,發現確實是 ACCPUBLIC, ACCSUPER組合而成:
06 01又是怎么組合的呢?通過命令javap -verbose HelloWord.class來查看,發現是 ACCPUBLIC, ACCINTERFACE, ACC_ABSTRACT組合而成:
關于JVM虛擬機中Class文件的訪問標志是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。