- ベストアンサー
javaのソースとclassファイルの単位について
最近JAVAの勉強を始めました。 基礎的なことで恐縮ですが、JAVAのコンパイル単位を知りたいのですが。 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか? 一つの*.javaファイルから、複数個のclassファイルができたり、複数の*.javaファイルから 一つのclassファイルができたりはしないんでしょうか? まだ、一つの*.javaから一つのclassファイルを作ったことしかないので、 申し訳ないですが、どなたか教えてください。よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
基本的にファイルには関係なく ソースに有るclassごとに *.class のファイルができます。 なので、一つのjavaファイルの中に複数のクラス(インナークラスも含め) が有ればその数分classファイルができます。 ただこれらのファイルを jarファイルにまとめてしまえば *.jar のファイル一つにもになりますが。 ファイル内に class クラス名1{ } class クラス名2{ } があれば クラス名1.class と クラス名2.class のファイルが出来ます。
その他の回答 (2)
- stardust
- ベストアンサー率44% (8/18)
>「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」 ということですね。 ▼ その通りです。shigeki-yy さんのおっしゃる通りですね。 私が曖昧な書き方をしていたもので、すいませんでした。 > ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。 ▼ では。javaのお勉強、頑張ってくださいね!
お礼
わざわざありがとうございました。 VBにすっかり慣れてしまっているので、すべてのOS上で動くことをコンセプトとしたJAVAは知れば知るほど魅力的です。 今は、仕事でJAVAで行っている開発資産を管理することになるので、ぼちぼちと勉強しているところです。せっかく始めたので、いずれはiアプリを作ることが目標です。 今後ともよろしくお願いします。
- stardust
- ベストアンサー率44% (8/18)
> 一つの*.javaファイルについては、必ず一つのclassファイルができるんでしょうか? > 一つの*.javaファイルから、複数個のclassファイルができたり、 これに関しては先のgookenさんの答えておられる通りです。 ただし、パブリッククラス(public class ~ と定義するもの)は一つのjavaファイルにつき一つしか定義できないはずです。 また、インナークラスの場合には (MyClassという名前のクラス内で定義されたインナークラスの場合) MyClass$1.class, MyClass$2.class ... というような名前になりますね。 > 複数の*.javaファイルから一つのclassファイルができたりはしないんでしょうか? こちらはできないはずです。
お礼
本当だ。 public class Test44 { * * } public class Test45 { * * } で、コンパイルすると、 「Test44.java:21: クラス Test45 は public であり、ファイル Test45.java で宣言しなければなりません。 public class Test45 { ^ 」 というメッセージが出ます。 「パブリッククラスの場合は、クラス名とイコールの*.javaファイルで作らないといけない。→つまり1対1になる。」 ということですね。 とても助かりました。ありがとうございます。
お礼
おお。本当っだっ。へぇぇ。 ありがとうございます。とても助かりました。