• ベストアンサー

パッケージについて

Javaのソースの頭にpackage ***** と記述されている場合があります。 そもそもpackageとは何のためにあるのでしょうか? コンパイルするためだけでなく、実行時にも重要な要素なのでしょうか? packageのしくみについてお詳しい方、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

>JAVAはエリアA/Bが基準だということを知らなければなりません。 >これをどのようにしてJAVAに知らせるのでしょうか? これはクラスパスの設定を使います。 クラスパスは、環境変数classpathか、 javacの-classpathオプションで指定します。 詳しくはJava2SDKの「SDKのツール」の部分を見てください。

renann
質問者

お礼

ありがとうごじました。

その他の回答 (1)

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

クラスが一つか二つのプログラムの場合は、パッケージのありがたみが実感できませんが、 世の中には、ひとつのプログラムで、百や千を越えるクラスを使うものもあります。 そういうとき、「この新しいクラスの名前、まだ使ってなかったかな?」 と確認するのは非常に手間がかかります。 パッケージに入れておけば、そういう手間が要りません。 同じパッケージに入っている少数のクラスを見ればいいわけです。 一番の意味は、「大きなプログラムのとき、わかりやすいように」です。 もう一つ、他人が作った既存のクラスを使いやすいようにするためでもあります。 パッケージの命名指針として、「ドメイン名を利用する」というのがあります。 ある人が「abc@def.co.jp」というメールアドレスを持っていたとしたら、 その人は自分用に jp.co.def.abc.*; というパッケージを作って自分の作ったクラスを置きます。 そうすれば他人の作ったクラスとごちゃごちゃになることはなくなります。 世界中のプログラマが協力して作業できます(理論的には)。 パッケージを付けたクラスは、実行時に、パッケージ名をつけて起動しなければなりません。 たとえば、jp.co.def.abcパッケージにTestというクラスを作ったら、実行するときは、 >java jp.co.def.abc.Test と指定してやらなければなりません。(多少面倒ですが)

renann
質問者

補足

回答ありがとうございます。 概念的には良く分かりました。 ただ、Javaはパッケージをどのようにして理解しているのでしょうか? パッケージは言い方を変えればディレクトリ構成になっていると思うのですが、基準ディレクトリがないと意味がない気がするのです。例えばパッケージがC.D.Eとなっていて、プログラムセットが/A/B/C/D/Eエリア(UNIX形式)に入っている場合にこれをコンパイルさせるにはJAVAはエリアA/Bが基準だということを知らなければなりません。 これをどのようにしてJAVAに知らせるのでしょうか?

関連するQ&A

専門家に質問してみよう