実体は、
private なプロパティにSetter/Gettorを付けただけのもの。
class xxxBean {
private int aaa;
int getAaa(){ return aaa; }
void setAaa( int aaa) { this.aaa = aaa; }
}
これが美味しいのは、
ちょこっとコードを付け加えると、容易に似たものがいっぱい作れるからだ。
例えば、
void setGMT(Date gmtTime) { this gmt = gmtTime; }
で時刻をセットしたら、
Date getJst() /* 日本 */ { return gmtTime + 9 hour; }
や
Date getEst() /* アメリカ西部*/{ return gmtTime – 9 hour; }
や
Date getEt() /* アメリカ東部*/{ return gmtTime – 5 hour; }
で判れば便利だからだ。
でも、全世界分のメソッドを作っても、賞味期限は不明なので、別のやり方(Locale)で延命している。
Localeでも新しい標準時刻が規定されれば、新しいstatic Locale を追加しなければならないが、メソッドそのものを追加する必要はない。
だが、50歩100歩なので、実際は大きな差は無い。
新しいメソッドを追加しないと国際問題になるが・・・
新しいstatic Localeを追加しなくても
代用で済むならOKな世の中の情勢によるところが大きい。
このBeanを使うと全てのメソッドは大雑把に
XxxBean aMethod (YyyBean)
に纏めることができる。
が、それはC言語どころかCOBOLでもBASICでも同じで、できないのは古い版のFORTRANぐらいなものだ。
※構造体の概念が欠落しているからね。
しかし、JavaだけBeanとか言っているところが、幼い感じがする。
そう、今のJavaは幼い。
見の丈が足らない。
例えば、インターフェースのための、ヘッダーファイルを定義できない。
インターフェースとして外殻だけだがクラスとしての実態を持たなければいけないので、
インジェクションによる初期化が必要なクセにそのコードの実装は実に巧みに隠しているため、
ソース上は丸く収まっても、実行してみれば・・・インターフェースのオブジェクトの実体はnullポインターなので、Exceptionが容易に発生する。
つまり、一通り出来上がっている振りをしているが、実は使い物にならないのだ。
そのため、jarをいくつもクラスパスに記述しないと、executeすらできない
ボロクソなものになってしまっている。
なぜこうなってしまったのかと云えば
java xxxxx -jar zzzzz.jar
と手軽に実行できるので、null pointer exceptionが起きたら・・・
足りない何かをくっ付けて
java xxxxx -jar zzzzz.jar -jar yyyyy.jar
とすれば済んでしまうので、
Javaコードの集合体はセキュリティ的には非常に危ない作りになっている。
java xxxxx -jar virus.jar -jar zzzzz.jar -jar yyyyy.jar
で簡単に乗っ取ることができる。
しかしサーバー内の話なのでOKということになっている。
ま、侵入されるなら、それ以前の出来事と云うところなのだろう。