いくつかの「カウンター」フィールドを持つカスタム オブジェクトがあります。このオブジェクトは、再帰的に呼び出される関数内でインクリメントされるフィールドを取得します。そのため、関数が呼び出されるたびにオブジェクトを新しく作成して、カウンターフィールドをリセットする必要がありますが、関数が再帰呼び出しにある場合は新しく作成されません。わかる?
現在、メソッドをオーバーロードすることでこれを行っているため、真の再帰ではありませんが、カウントが永続化されるように、カウンターを使用して同じオブジェクトを渡しています。
基本的に、以下のようなものは、私が今やっているものです:
static Counter count(Object parent)
{
Counter newCounter = new Counter();
newCounter = count(parent, newCounter);
return newCounter;
}
static Counter count(Object parent, Counter currentCounter)
{
Object cur = new Object(parent);
if(cur.isChild())
Counter.child++;
else if(cur.isParent())
{
Counter.parent++;
count(cur, currentCounter);
}
return currentCounter;
}
これを行うより良い方法はありますか?または、過負荷を必要としない方法はありますか? ああ、システム内の他の場所で簡単に変更できない制約があるため、main メソッドを静的に保つ必要があります。