単一 Java ファイル内の複数のクラス宣言
Java では、1 つのファイル内に複数の最上位クラスを定義できますが、 (JLS に従って) これらのクラスのうち 1 つだけをパブリックにできるという制限付き§7.6).
このテクニックに特別な用語はありますか?
「内部」、「ネスト、 " または "匿名" クラス、それは トップレベルの複数クラスと呼ばれます宣言.
セカンダリ クラスは他のコンパイル単位での参照が制限されていますか?
JLS では、Java 仮想マシン (JVM) が強制する可能性があると確かに述べています。これらの 2 次クラスは「パッケージの他のコンパイル単位のコードから参照」できないという制限があります。ただし、この制限は Java 実装全体で一貫して適用されるわけではありません。
Java の実装動作の説明
一部の Java 実装では、このファイル間参照を積極的に禁止していない場合がありますが、効果的にそれを妨げる制限があります。たとえば、Foo という名前のパブリック クラスが、別のファイルにある Bar という名前の別のトップレベル クラスを参照している場合、Foo のコンパイルは同様のエラーで失敗する可能性があります: 「シンボルが見つかりません: クラス Baz」。このエラーは、コンパイラが参照クラス Bar を検索するソース ファイルを認識していないために発生します。
これらの問題を回避するには、セカンダリ クラスを除き、各ソース ファイルを 1 つのトップレベル クラスのみに制限することをお勧めします。クラスは何らかの理由でパブリック クラスにアクセスする必要があります。
以上が単一の Java ファイル内に複数のトップレベル クラスが存在できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。