我學會了here,即使這是最佳實踐並且儘管大多數編譯器要求您這樣做,但它並不是嚴格要求在其包含的公共類之後命名的.class
至少從語言規範的角度來看。.class文件的Java語言命名約定
我搜索了JLS和JVM規範,但無法找到本主題討論的實際章節。對我而言,這個問題在之間根本沒有被處理過。
如果存在的話,Oracle官方文檔可以確認或揭穿以下聲明?
給予
.class
文件相同的名稱,它們所包含的公共類 - 無論他們做的 - 簡直是必須的,但根據JLS這不是嚴格的。從JLS的角度來看,編譯器會選擇是否設置這樣的限制。
我會用進一步引用出版物/著作該主題的章節或頁碼。 – Salvioner
請注意,每個.java源可能有多個.class文件,即每個創建的內部類都有一個.class文件。對於匿名內部類,通常對於命名內部類的格式爲'[toplevel_public_class] $ [inner_class] .class',對於匿名內部類格式爲'[toplevel_public_class] $ [number] .class'「。我不知道這是一個規則還是一種標準的做法,但是.class文件並不總是完全匹配頂級類的名稱(儘管它是名稱的重要組成部分)。 – Thomas
順便說一句,我可能在這裏是錯誤的,但從運行時的角度來看,文件名應該不重要,因爲文件包含所有必要的信息。但是,具有匹配的文件名稱使人類或基於文本的操作更容易(例如,嘗試在jar中查找類以加載它),因爲您不必掃描每個文件以找到正確的文件。對源文件的限制也可能主要是爲了防止人們將其搞亂;) – Thomas