Java ではなぜファイル名とは異なる名前のクラスをコンパイルできるのでしょうか? 質問する

Java ではなぜファイル名とは異なる名前のクラスをコンパイルできるのでしょうか? 質問する

ファイルTest.javaとその中に次のコードがあります。

public class Abcd
{
        //some code here

}

現在、クラスはコンパイルされませんが、public修飾子を削除すると正常にコンパイルされます。

Java では、クラス名が public でない場合にファイル名とは異なるクラス名をコンパイルできる理由は何ですか。

初心者の質問だとはわかっていますが、良い説明が見つかりません。

ベストアンサー1

理由は、ファイルごとに複数のトップレベルクラスを許可するためです.java

イベント リスナーなどの多くのクラスはローカルでのみ使用され、Java の最も古いバージョンではネストされたクラスはサポートされていませんでした。「ファイル名 = クラス名」ルールが緩和されなければ、このようなクラスごとに独自のファイルが必要になり、小さな.javaファイルが際限なく増加し、密結合されたコードが分散するという結果が避けられませんでした。

Java がネストされたクラスを導入するとすぐに、このルールの重要性は大幅に低下しました。今日では、何百もの Java ファイルを調べても、このルールを活用しているファイルに出会うことは決してありません。

おすすめ記事