複数のクラス宣言: Java のファイルレベルのグループ化の探索
Java では、単一のファイル内で複数のトップレベルのクラスを定義する機能1 つのクラスのみを指定できるという条件に従って、多くの場合活用されます。 public.
命名法と実装
この手法には標準化された名前はありませんが、内部クラス、ネストされたクラス、匿名クラスといったよく知られた概念とは異なります。 Java 言語仕様 (JLS) はこのアプローチを許可していますが、これらの 2 次クラスが外部参照から制限される可能性があると規定しています。
実装に関する考慮事項
特に、Java コンパイラ ( javac) は、ファイル名が一致しない限り、異なるファイルからのトップレベル クラスの参照を事実上禁止する制限を課します。この制約は、参照されるクラスのソース ファイルの場所に関するコンパイラの不確実性から生じます。
コンパイルの失敗
クラス (Foo など) が別のクラス (例: Baz) を、そのファイル名に対応するクラスも参照せずに、別のファイル (例: Bar.java) から取得します。 (例: Bar)、コンパイル プロセスは失敗します。これは、コンパイラが Baz を含むソース ファイルを判断できないために発生します。
回避策とベスト プラクティス
この制限を回避するには、影響を受けるすべてのファイルを同時にコンパイルするか、参照されたクラス (例: Bar) を含むクラスをプリコンパイルします。ただし、このアプローチでは、ビルド プロセスに不確実性と不安定性が生じる可能性があります。
そのため、信頼性と柔軟性を確保するために、各ファイルを単一のトップレベル クラスに制限する規則が広く採用されています。 javac の新しいバージョンでも、この制限に違反した場合に警告が発行されます。
結論
Java では 1 つのファイル内で複数のトップレベル クラスを宣言できますが、実際には影響と実装上の制限があるため、慎重なアプローチが必要です。各ファイルを単一のトップレベル クラスに制限するベスト プラクティスにより、将来のコード変更に対する柔軟性を維持しながら、安定した予測可能なビルド プロセスが保証されます。
以上が単一の Java ファイル内の複数のトップレベル クラスによりコンパイルの問題が発生する可能性がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。