5

私はこのような方法を持っています:

    public void runMethod()
    {
    method1();
    method2();
    method3();
    }

IDに基づいてこのrunMethodを複数回呼び出したい。ただし、たとえばmethod2()が何らかの理由で失敗した場合、runMethodを呼び出すと、method3()を実行し、method1()(このIDに対して既に正常に実行されている)を再度実行しないようにする必要があります。

これを達成するための最良の方法は何でしょうか?

助けてくれてありがとう

4

3 に答える 3

3

メソッドが正常に実行されたかどうかをマップに記録できます。

private Map<String, Boolean> executes = new HashMap<String, Boolean>();

public void method1() {
    Boolean hasExecuted = executes.get("method1");
    if (hasExecuted != null && hasExecuted) {
        return;
    }
    executes.put("method1", true);
    ...
}

// and so forth, with method2, method3, etc
于 2012-10-18T15:48:15.750 に答える
1

私の解決策は、特にコードが頻繁に呼び出される場合は、マップを導入する代わりに、intisインジケーターを追加することです。次のようになります。

public int runMethod(int flag) {
    if (flag < 1) {
        method1();
        if (method1failed) {
            return 1;
        }
    }
    if (flag < 2) {
        method2();
        if (method2failed) {
            return 2;
        }
    }
    if (flag < 3) {
        method3();
        if (method3failed) {
            return 3;
        }
    }
    return 4;
}
于 2012-10-18T16:02:51.033 に答える
1

ある種のステートマシンを探しています。メソッドの実行状態をデータ構造(マップなど)に保持します。

method の開始時に、指定された id の method1 の実行が正常に実行されたかどうかを確認する必要があります。

public void runMethod()
{
  method1();
  method2()
  method3();
}
private Set<Integer> method1Executed = new HashSet<Integer>();
private Set<Integer> method2Executed = new HashSet<Integer>();

private void method1(Integer id)
{
    if (method1Executed.contains(id)) {
        return;
    }
    // Processing. 
    method1Executed.add(id)
}

 // Similar code for method2.
于 2012-10-18T15:50:20.040 に答える