(JAVA)ひとつ上の階層名でパッケージ宣言する??

渡米生活ブログなのにprograming tipsばかり育っている…分けるべきか??
只今、boostは一時中断してjavaのコードちまちま書いてます。まだJAVAはようわからん…
というわけで、パッケージについての疑問。こんなクラス宣言をしたとする。

package hoge.moge.mypackage;
public class MyClass {
....

このとき、javaのお約束では、MyClass.javaは厳密に hoge/moge/mypackage/ ディレクトリの直下にないといけないはずなんだけど…
実は、今書いているコードは hoge/moge/mypackage/subpackage/ の下にMyClass.javaがあるのに、コンパイルできて走ってしまったりする。
おまけに、別のサブディレクトリ hoge/moge/mypackage/anotherpackage/の下にある別のクラスAnotherClassにも同じことをやると
(つまり、パッケージの宣言をpackage hoge.moge.mypackage;とやってしまう)
import文なしでMyClassにアクセス出来ちゃったりするんですねえ…便利なことに(^^;)
(ちなみにコンパイル/実行環境はj2sdk1.4.2)

コレ、なんか問題ありそうなんだけど、まだパッケージ構造固まってないから、有り難くそのままにしています(笑)。だってだんだんクラスが増えて来て、ディレクトリ分けたいな〜と思ったときにいちいちpackage文やimport文直すの面倒なんだよね。全部できてから一気に直せばよし。

javaも確かに悪くないな、と思い始めた今日この頃だけど、このディレクトリ構造がそのままパッケージになっちゃうというのは少々窮屈に感じます。プログラムとしては一まとまりで扱いたいけど、同じディレクトリにバラまくと見にくいから、サブディレクトリに分けたい、という場面には多々遭遇するんですが、そうすると折角のJAVA特有のパッケージ単位のアクセス制御がうまく生かせないんですよね。結局、クラスはみんなpublic修飾子つきで定義してしまって、これじゃC++とかわらん、という状況に。サブディレクトリ止めりゃいいんだけど、lsと打ったときに20を超えるクラスが並ぶのはどうも…。。。まあ、本職のプログラマさん達はプログラム書くのにviなんて使わんのだろうから、lsも打たないんだろうけどさ。

以上、どうでもいいけどもしかしたら人によっては便利かもしれないTipsでした。
[PR]
by lily_lila | 2006-05-17 09:14 | Programing Tips | Comments(0)

渡米生活日々の備忘録。


by lily_lila
カレンダー
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30