日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Class文件结构介绍[访问标志,类索引,父类索引,接口索引集合]

發布時間:2023/12/29 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Class文件结构介绍[访问标志,类索引,父类索引,接口索引集合] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

訪問標志

??在常量池結束后,緊接著的兩個字節代表訪問標志(access_flags),這個標志用于識別一些類或者接口層次的訪問信息,包括:這個Class是類還是接口,是否定義為public類型,是否定義為abstract類型,如果是類的話是否被聲明為final等,

標志名稱標志值含義
ACC_PUBLIC0x0001是否為public類型
ACC_FINAL0x0010是否被聲明為final,只有類可以設置
ACC_SUPER0x0020是否允許使用invokespecial字節碼指令的新語意,invokespecial指令的語意在JDK1.0.2發生過改變,為了區別這條指令使用哪種語意,JDK1.0.2之后編譯出來的類的這個標志必須為真
ACC_INTERFACE0x0200標識這是一個接口
ACC_ABSTRACT0x0400是否為abstract類型,對于接口或者抽象類,此標志為真,其它類型為假
ACC_SYNTHETIC0x1000標識這個類并非由用戶代碼生成
ACC_ANNOTATION0x2000標識這是一個注解
ACC_ENUM0x4000標識這是一個枚舉

注意:access_flags中一共有16個標志位,此處只列舉了其中8個。
定義此類:

public final class Test2 {private static final String NAME="bobo";private int age = 18;public void fun1(){int b = 20;int c = 30;int d = b+c+age;System.out.println(d);} }

訪問標志對應的信息

??標識結果的值為0x0031,是多標識符組成,即由多個標識符的值累加得來。因為標識符對應的值的特殊性,值累加后的結果可以唯一定位由哪些標識符組成,常見的0x0021只有ACC_SUPER和ACC_PUBLIC的值累加才能得到,而上面的0x0031只有ACC_SUPER與ACC_FINAL與ACC_PUBLIC的值累加后得到。

類索引,父類索引與接口索引集合

??類索引(this_class)和父類索引(super_class)都是一個u2類型的數據,接口索引計數器也是一個u2類型的數據,接口索引集合則是一組u2類型的數據集合,Class文件中的這幾項數據來確定這個類的繼承關系

類索引

??確定當前類的全限定名

父類索引

??確定當前類的父類的全限定名。由于java單繼承的原則,所以父類只可能有一個;由于Object是所有其他類的基類,所以除了Object類本身的super_class為0意外,其余的所有類的super_class都不為0.

接口索引集合

??按照當前類implements(或者當前接口extends)的接口順序,從左往右排列在接口的索引集合中。

public final class Test2 implements Serializable,Runnable{private static final String NAME="bobo";private int age = 18;public void fun1(){int b = 20;int c = 30;int d = b+c+age;System.out.println(d);}@Overridepublic void run() {// TODO Auto-generated method stub} }

對應的接口索引:

小結:
??類索引的直接值,父類索引的直接值,接口索引集合中的索引的直接值,代表的是一個常量池中的索引值,該索引值對應為一個CONSTANT_Class_info , CONSTANT_Class_info 又指向CONSTANT_Utf8_info,CONSTANT_Utf8_info中存儲著全限定名字符串信息。

參考《深入理解Java虛擬機》

總結

以上是生活随笔為你收集整理的Class文件结构介绍[访问标志,类索引,父类索引,接口索引集合]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。