免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

JavaClass解析器實(shí)現(xiàn)方法示例-創(chuàng)新互聯(lián)

最近在寫一個(gè)私人項(xiàng)目,名字叫做ClassAnalyzer,ClassAnalyzer的目的是能讓我們對(duì)Java Class文件的設(shè)計(jì)與結(jié)構(gòu)能夠有一個(gè)深入的理解。主體框架與基本功能已經(jīng)完成,還有一些細(xì)節(jié)功能日后再增加。實(shí)際上JDK已經(jīng)提供了命令行工具javap來(lái)反編譯Class文件,但本篇文章將闡明我實(shí)現(xiàn)解析器的思路。

創(chuàng)新互聯(lián)公司專注骨干網(wǎng)絡(luò)服務(wù)器租用10多年,服務(wù)更有保障!服務(wù)器租用,重慶服務(wù)器托管 成都服務(wù)器租用,成都服務(wù)器托管,骨干網(wǎng)絡(luò)帶寬,享受低延遲,高速訪問(wèn)。靈活、實(shí)現(xiàn)低成本的共享或公網(wǎng)數(shù)據(jù)中心高速帶寬的專屬高性能服務(wù)器。

Class文件


作為類或者接口信息的載體,每個(gè)Class文件都完整的定義了一個(gè)類。為了使Java程序可以“編寫一次,處處運(yùn)行”,Java虛擬機(jī)規(guī)范對(duì)Class文件進(jìn)行了嚴(yán)格的規(guī)定。構(gòu)成Class文件的基本數(shù)據(jù)單位是字節(jié),這些字節(jié)之間不存在任何分隔符,這使得整個(gè)Class文件中存儲(chǔ)的內(nèi)容幾乎全部是程序運(yùn)行的必要數(shù)據(jù),單個(gè)字節(jié)無(wú)法表示的數(shù)據(jù)由多個(gè)連續(xù)的字節(jié)來(lái)表示。


根據(jù)Java虛擬機(jī)規(guī)范,Class文件采用一種類似于C語(yǔ)言結(jié)構(gòu)體的偽結(jié)構(gòu)來(lái)存儲(chǔ)數(shù)據(jù),這種偽結(jié)構(gòu)中只有兩種數(shù)據(jù)類型:無(wú)符號(hào)數(shù)和表。Java虛擬機(jī)規(guī)范定義了u1、u2、u4和u8來(lái)分別表示1個(gè)字節(jié)、2個(gè)字節(jié)、4個(gè)字節(jié)和8個(gè)字節(jié)的無(wú)符號(hào)數(shù),無(wú)符號(hào)數(shù)可以用來(lái)描述數(shù)字、索引引用、數(shù)量值或者是字符串。表是由多個(gè)無(wú)符號(hào)數(shù)或者其它表作為數(shù)據(jù)項(xiàng)構(gòu)成的復(fù)合數(shù)據(jù)類型,表用于描述有層次關(guān)系的復(fù)合結(jié)構(gòu)的數(shù)據(jù),因此整個(gè)Class文件本質(zhì)上就是一張表。在ClassAnalyzer中,byte、short、int和long分別對(duì)應(yīng)u1、u2、u4和u8數(shù)據(jù)類型,Class文件被描述為如下Java類。

public class ClassFile {
 public U4 magic;       // magic
 public U2 minorVersion;      // minor_version
 public U2 majorVersion;      // major_version
 public U2 constantPoolCount;    // constant_pool_count
 public ConstantPoolInfo[] cpInfo;   // cp_info
 public U2 accessFlags;      // access_flags
 public U2 thisClass;      // this_class
 public U2 superClass;      // super_class
 public U2 interfacesCount;     // interfaces_count
 public U2[] interfaces;      // interfaces
 public U2 fieldsCount;      // fields_count
 public FieldInfo[] fields;     // fields
 public U2 methodsCount;      // methods_count
 public MethodInfo[] methods;    // methods
 public U2 attributesCount;     // attributes_count
 public BasicAttributeInfo[] attributes;  // attributes
}

當(dāng)前文章:JavaClass解析器實(shí)現(xiàn)方法示例-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://m.newbst.com/article14/dpiode.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)App設(shè)計(jì)品牌網(wǎng)站建設(shè)網(wǎng)站策劃網(wǎng)站導(dǎo)航面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)