2

initメソッドがJavaで呼び出されることを確認する良い方法は何ですか? 私が見る代替案は

  • テストしないでください。メソッドが単独で失敗するようにします。NullPointerException
  • メソッドが初期化またはスローされたかどうかをテストします
public void foo() {
     if (!inited) {
         throw new IllegalArgumentException("not initalized");
     }
     ...
}
  • デラゲート
public void foo() {
     if (!inited) {
         throw new IllegalArgumentException("not initalized");
     }
     fooInternal();
}

private void fooInternal(){ ... };
  • 常に init し、それ以外の場合は init を noop にします
public void foo() {
     init();
     ...
}
public void init() {
     if(!inited) {
         ...
     }
}
  • サイレント初期化
public void foo() {
     if (!inited) {
         init();
     }
     ...
}

これらのアプローチのほとんどは非常に冗長で、全体的な読みやすさが低下します。

4

3 に答える 3

2

init();すべてのコンストラクター呼び出しも実行されるように、初期化ブロック内で呼び出しますinit();

于 2012-11-02T10:58:45.653 に答える
2

ほとんどの場合、すぐに失敗したいので、アプリケーションが実行されているコンテナーに基づいて、すぐに失敗するのに役立つメカニズムを選択します。たとえば、Web コンテナーの場合、サーブレット コンテキストの作成中にそれを初期化することができます。さらに、以下が冗長である理由がわかりません。意図がシンプルで明確かつ明確です。

public void foo() {
     if (!inited) {
         init();
     }
     ...
}
于 2012-11-02T11:02:19.617 に答える