首頁 > Java > java教程 > 單一 Java 檔案中可以存在多個頂層類別嗎?

單一 Java 檔案中可以存在多個頂層類別嗎?

Mary-Kate Olsen
發布: 2024-11-27 16:17:14
原創
680 人瀏覽過

Can Multiple Top-Level Classes Exist in a Single Java File, and What Are the Implications?

Java:一個文件中的多個類聲明

雖然可以在單一Java 文件中定義多個頂級類,但遵循某些約定是不可或缺的。其中一種約定是,依照 Java 語言規範 (JLS) 的規定,只能將一個類別宣告為公用類別。

術語

沒有特定術語來表示描述這種在單一文件中定義多個類別的技術。與內部類別、巢狀類別或匿名類別不同,這些頂級類別具有不同的範圍以及與其包含檔案的關係。

編譯單元限制

JLS 聲明系統可能會強制限制這些非公共二級類別不能「被包裝的其他編譯單元中的程式碼引用」。這意味著它們不能被視為包私有。

實作

實際上,像 javac 這樣的 Java 編譯器並不嚴格執行此限制。然而,它們確實有一個限制,使得從另一個文件引用頂級類別是非常不受歡迎的,除非它與其所在的文件共享相同的名稱。

例如,考慮兩個Java文件:

  • Foo.java:
public class Foo {
    // ...
}
登入後複製
  • Bar.java:
public class Bar {
    // ...
    Baz baz; // Compilation error if compiled separately
}

class Baz {
    // ...
}
登入後複製

如果 Foo.java 引用了 Baz 但沒有引用 Bar,嘗試獨立編譯 Foo.java 將導致編譯錯誤。

推理

有此限制是因為當一個類別被搜尋時,javac 無法自動決定要搜尋哪個原始檔案從另一個檔案引用。為了解決這個問題,編譯器要求外部類別引用的任何頂級類別必須與包含檔案同名,或者在同名的類別中明確聲明(例如,在上面的範例中,如果 Foo .java 還包含一個類別 Bar)。

後果和最佳實踐

雖然技術上可以利用如果在單個文件中包含多個頂級類,由於上述編譯器限制,通常認為這種做法不好。為了保持可靠的建置流程,建議遵守每個檔案放置一個頂級類別並明確聲明其可見性(公共或包私有)的約定。

以上是單一 Java 檔案中可以存在多個頂層類別嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板