[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends:00667] Re: Java の初期化
"arai <xnoric@xxxxxxxxxxx>"さんは書きました:
> これなら・・私は別に'1'でも'2'でも
> あまり不自然には感じませんが'1'の場所で他のメソッドを
> 呼び出し、その戻り値で初期化を行うのは非常に不快感
> を感じるのですが、皆さんはどうですか?
初期化を行うメソッドがstaticメソッドとすればよいかと。初期値をメ
ソッドから得るのはよいスタイルと思います。
class Test {
int a = getDefaultA();
static int getDefaultA() {
return 111;
}
:
}
> クラスが初期化されていないのだからメソッドが
> 正しく動かないはずなのに、正常動作してします。
> 複雑な場合はちょっとちがいますが・・
> どのように説明すればいいのでしょうか?
staticメソッドでない場合も、必ずしも正しくないとは言えないと思い
ます。正しく動作するには多分以下の2点が条件として必要になります。
・メソッドの中で同じクラスのフィールドを参照する場合、先に初期化
されていることを設計上保証すること
・メソッドがサブクラスでオーバーライドされることを想定して設計す
るか、オーバーライドを禁止すること
これが満たされていないならば、いろいろな状況下で「正常に動作して
いる」のではなく、ある状況下で「たまたま動作している」だけではな
いでしょうか?
---
Toru TAKAHASHI
------------------------------------------------------------------------
★あなたのホームページに“最新ニュース”をお届け!!
http://ap.infoseek.co.jp/ticker2.html