1. 程式人生 > 其它 >Java編譯後的clas檔案命名問題

Java編譯後的clas檔案命名問題

由於公司電腦是內網,僅有一個沒有開啟過的vscode,用起來很麻煩,而我只需要做做leetcode題就行了,所以直接用編輯器寫.java檔案,然後javac編譯成class檔案,再使用java class名執行,因為有段時間沒有摸過java了,所以有點生疏。發現了一些問題。

我建立了兩個.java檔案,一個是主類用來執行需要執行的程式碼,另一個測試類用於測試一些小語句或者小功能。於是我開始寫……寫完開始編譯,執行javac getindex.java 生成了一個test.class檔案,再執行java test,ok執行成功。接著我試一下測試類,發現也生成了一個test.class,這時候就優點奇怪了,為什麼兩個java檔案生成的class檔名字是同一個呢……經過仔細檢查,發現原來我寫測試類的時候是把主類的程式碼複製過去,test這個類名也複製過去了,所以生成的class檔案是同一個名字的。這裡標記一下,class命名的規則:

  • 編譯後產生的class數量取決於類的數量
  • 繼承父類或者實現介面,都不影響編譯後的class檔案數量
  • 普通內部類產生多個class檔案,內部類的class檔名為:外部類名$內部類名,如果是多層巢狀內部類,則會繼續疊加
  • 匿名內部類產生多個class檔案,匿名內部類class檔名為:外部類名$匿名內部類名+數字,這裡的數字就是層級
  • 同一個java檔案中存在多個類,規則也和上述一致

本文來自部落格園,作者:我永遠喜歡石原里美,轉載請註明原文連結:https://www.cnblogs.com/yuan-zhou/p/15737908.html