Java編譯後產生class檔案的命名規則 - 程式人生

文章推薦指數: 80 %
投票人數:10人

今天剛好有同學問了下Java編譯後產生的.class檔名的問題,雖然一直都在使用Java做開發,但是之前對編譯後產生的.class檔名的規範也基本沒做了解過,也 ... 程式人生>>Java編譯後產生class檔案的命名規則 Java編譯後產生class檔案的命名規則 阿新••發佈:2018-12-31 今天剛好有同學問了下Java編譯後產生的.class檔名的問題,雖然一直都在使用Java做開發,但是之前對編譯後產生的.class檔名的規範也基本沒做了解過,也真的是懺愧啊!今天無論如何都要總結下。

下面是本人今天做的實驗 %26nbsp; 1、建立類ClassA,觀察產生的.class檔案。

目的是測試沒有任何繼承、實現類以及內部類等情況下產生的.class檔案以及命名規則 實驗結果: 從下圖可以看出,只產生了一個.class檔案,檔名為類名.class %26nbsp; 2、建立類ClassB,觀察產生的.class檔案。

目的是測試有實現介面類情況下產生的.class檔案以及命名規則 實驗結果: 從下圖可以看出,只產生了一個.class檔案,檔名為類名.class %26nbsp; 3、建立類ClassC,觀察產生的.class檔案。

目的是測試有繼承父類情況下產生的.class檔案以及命名規則 實驗結果: 從下圖可以看出,只產生了一個.class檔案,檔名為類名.class %26nbsp; 對以上3點做個小結: 從以上3個實驗來看,編譯後產生的.class檔案跟它所實現的介面、繼承的父類都沒有關係,在這些情況下,它都只產生一個.class檔案,而且檔名就是類名.class 4、建立類ClassD,定義了一個普通內部類ClassDd,觀察產生的.class檔案。

目的是測試有內部類情況下產生的.class檔案以及命名規則 實驗結果: 從下圖可以看出,產生了2個.class檔案,ClassD.class和ClassD$ClassDd.class。

這說明產生的.class檔案與內部類有關係。

外部類產生的檔案跟上面的3個實驗結果一樣,都是類名.class,而內部類,則採用了外部類名$內部類名.class,外部類和內部類名使用符號$隔開 注意:這裡的外部類都是相對而言 %26nbsp; 5、建立類ClassD,定義了一個普通內部類ClassDd,再在ClassDd定義它的內部類ClassDdd,觀察產生的.class檔案。

目的是測試有內部類情況下產生的.class檔案以及命名規則 實驗結果: 從下圖可以看出,產生了3個.class檔案,ClassD.class、ClassD$ClassDd.class、ClassD$ClassDd.class$ClassDdd.class。

這個實驗結果跟上面的第四個實驗是一樣的,只是這次的第2層內部類檔案是在第1層內部類的基礎上增加自己的類名。

注意:這裡的外部類都是相對而言 %26nbsp; %26nbsp; %26nbsp; %26nbsp; 對第4和第5個實驗做下小結。

以上這兩點都是驗證有普通內部類情況下產生哪些.class檔案以及命名規則如何。

最後得出結論如下: 類個數:看定義類的個數,包括外部類和普通的內部類 .class檔名的命名規則:外部類名+$+內部類名+.class,即等於當層內部類以及每一層外部類的名字疊加,但是每個類之間使用符號$隔開 %26nbsp; %26nbsp; %26nbsp; 6、建立類ClassE,定義了一個匿名內部類,觀察產生的.class檔案。

目的是測試有匿名內部類情況下產生的.class檔案以及命名規則 實驗結果: 從下圖可以看出,產生了2個.class檔案,ClassE.class和ClassE$1.class。

其實這個實驗結果跟第4個實驗的結果相似,不同的是,內部類由於沒有名字,因此採用數字來表示。

這數字按照定義的匿名內部類的順序來一次增加的。

%26nbsp; %26nbsp; %26nbsp; 7、建立類ClassF,並在同一個.java檔案中定義另外一個類ClassFf,觀察產生的.class檔案。

目的是同一個.java檔案定義的類所產生的.class檔案情況 實驗結果: 同一個.java檔案定義的類所產生的.class檔案情況,符合上面上面驗證的規範。

%26nbsp; %26nbsp; %26nbsp; %26nbsp; 最後總結: 1、編譯後產生的.class檔案個數:有多少個類,產生多少個.class檔案 %26nbsp; 2、.class檔案命名規則: %26nbsp;%26nbsp;%26nbsp;2.1普通內部類 %26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;外部類名+$+內部類名%26nbsp;[+%26nbsp;$ +內部類名%26nbsp;+...]+%26nbsp;.class,類名之間使用符號$隔開 %26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;例如:ClassD$ClassDd$ClassDdd.class,這裡ClassDdd是對底層的普通內部類,它的父類ClassDd,而ClassDd的父類也是最外層的外部類ClassD %26nbsp;%26nbsp;%26nbsp;2.2匿名內部類 %26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;外部類名+$+數字%26nbsp;[+%26nbsp;$ +%26nbsp;數字%26nbsp;+...]+%26nbsp;.class,類名之間使用符號$隔開,數字根據在外部類中定義的順序決定 %26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;%26nbsp;例如:ClassE$1$1.class %26nbsp; 3、同一個.java檔案中定義的其他非public宣告的類,都遵循以上2點規範 %26nbsp; 3、繼承、或者介面實現,不影響編譯產生的.class檔案個數和命名規則 %26nbsp; 美團點評筆試--拼湊錢幣 «上一篇 HttpClient4.5教程-第二章-連線管理下一篇» 相關推薦 Java編譯後產生class檔案的命名規則 今天剛好有同學問了下Java編譯後產生的.class檔名的問題,雖然一直都在使用Java做開發,但是之前對編譯後產生的.class檔名的規範也基本沒做了解過,... log4j2.0以後版本的配置檔案命名規則 log4j是apache的一個開源專案,目前的版本已經更新到2.6.2,首先需要注意的是,log4j2.0以後... Web前端開發規範:檔案命名規則 Web前端開發規範 1.檔案命名規則 1.1檔名稱的命名規則 統一用小寫的英文字母,數字和下劃線的... 電子研發公司_檔案命名規則、版本命名規則_建議 檔案命名規則 專案代號_檔案類別名_版本號_完成時間 |         |       ... java原始檔編譯後產生bytecode(試題)(自己寫的解釋) 下列說法哪一個是正確的。

( B) A.Java程式經編譯後會產生machinecodeB.Java程式經編譯後會產生bytecode... 如何減小編譯後可執行檔案的大小 CFLAGS+=-ffunction-sections-fdata-sectionsLDFLAGS+=-Wl,-... 【Java編譯】含package的類檔案編譯 含package的類檔案編譯: packagecom.zhangxueliang.setdemo; publicclassDemo1{ ... web專案釋出到tomcat中編譯後沒有classes檔案的原因 通常專案編譯釋出到tomcat中後會在WEB-INF下生成classes檔案,這裡麵包含的是編譯後的Java原始碼檔案!那麼... Spring中的packagesToScan的方式配置hibernate的class檔案對映規則的理解 Spring中的packagesToScan的方式配置hibernate的class檔案對映規則的理解  &nbsp... Java程式的組織形式和命名規則 Java程式的組織形式: Java程式是一個純粹的面向物件的語言,因此Java程式必須以類(class)的形式存在。

類(c... 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 最近訪問



請為這篇文章評分?