0

私はJavaプログラミングに不慣れで、Demoという名前のクラスを1つ作成し、sample.javaとして保存しました。このJavaプログラムをコンパイルすると、次のようなコンパイルエラーが発生します。

  public class Demo {
        public static void main(String[] args) {
        System.out.println("This is year");
                }
            }

sample.java:3:クラスDemoはパブリックであり、Demo.javaという名前のファイルで宣言する必要があります

なぜ個々のファイルでパブリッククラスを宣言するのですか......

ありがとう

Mukthyar

4

4 に答える 4

2

これがJava仕様に必要なものであるため(または、少なくとも、実装でこれを要求できるようになります。以下のJonのコメントを参照してください)。


「なぜ」については、仮説しか立てられません。しかし、Javaの設計者が明確なコーディング規則などに非常に熱心だったことは明らかです。ソースファイルごとに1つのパブリッククラスがあるということは、どこで何かを見つけるかについて曖昧さがないことを意味します。

(技術的な理由がある場合、私はそれを知りません。)

于 2012-05-31T10:39:41.100 に答える
1

TL; DR:ソフトウェアの概念的な複雑さを軽減します。

無関係な名前のファイルに多くのパブリッククラスが隠されている場合、パッケージ構造を見るだけでプログラムの概念構造を確認するのがはるかに難しくなります。

@java仕様がそう言っているので-本当の質問は仕様の背後にある理由だと思います

于 2012-05-31T10:40:18.183 に答える
1

@Oli Charlesworthは正しいです:これはJava言語仕様で必要です。あなたはおそらく彼らがこれを必要とする理由を尋ねることができますか?考えられる答えは、物事を明確にすることです。クラスは、定義上、原子単位です。クラスを他のバージョンに置き換えることができ、パブリックインターフェイスが変更されていない場合は、すべてが引き続き機能します。

そのため、Java言語の設計者は、各クラスを別々のファイルに保存するように強制することにしました。

彼らは非公開クラスに対していくつかの例外を行っただけです。複数の非公開クラスを1つのファイルに保存できます。その理由は、非公開クラスは、作成者がいつでも変更できる実装の一種の厄介な詳細であるためだと思います。クラスは非公開であるため、これらの変更はAPIユーザーに影響を与えることはありません。

ただし、すべてのクラス(公開されていない場合でも)を個別のファイルに保存することを強くお勧めします。これにより、コードの可読性が向上し、最終的にはその品質が向上します。

于 2012-05-31T10:45:52.337 に答える
0

直交していない名前のファイルに何百ものクラスがあるファイルが乱雑になるのを防ぐためです。namespacepart / namespacepart / namespacepart / classname構造は、標準的で持続可能な構造を提供するためにあります。

于 2012-05-31T10:41:21.507 に答える