多個類別宣告:探索 Java 的檔案層級分組
在 Java中,能夠在單一文件中定義多個頂級類別經常被利用,但必須遵守只能指定一個類別為public.
命名和實作
雖然這種技術沒有標準化的名稱,但它與熟悉的內部類別、巢狀類別和匿名類別的概念不同。 Java 語言規範 (JLS) 允許這種方法,但規定這些輔助類別可能會受到外部參考的限制。
實作注意事項
值得注意的是,Java 編譯器( javac) 施加了一個限制,有效地禁止從不同文件引用頂級類,除非它們的檔案名稱匹配。此約束是由於編譯器對所引用類別的原始檔案位置的不確定性而產生的。
編譯失敗
當一個類別(例如Foo)嘗試存取另一個類別(例如,Baz)來自不同的檔案(例如,Bar.java),而不引用與該檔名對應的類別(例如,Bar),編譯過程失敗。發生這種情況的原因是編譯器無法確定包含 Baz 的原始檔。
解決方法和最佳實踐
要規避此限制,可以同時編譯所有受影響的檔案或預編譯包含引用類別的類別(例如 Bar)。然而,這種方法可能會為建造過程帶來不確定性和不穩定。
因此,為了可靠性和靈活性,將每個文件限制為單一頂級類別的約定被廣泛採用。當違反此限制時,較新版本的 javac 也會發出警告。
結論
雖然 Java 允許在單一文件中聲明多個頂級類,但實際情況影響和實施限制需要採取謹慎的態度。將每個檔案限制為單一頂級類別的最佳實踐可確保穩定且可預測的建置流程,同時保持未來程式碼修改的靈活性。
以上是單一 Java 檔案中的多個頂層類別會導致編譯問題嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!