私は以下の2 methods
を持っています。円形の依存関係を無限ループで解く?
正しい使用例では、cancelChildTree()
はremoveChildRelationsIfNecessary()
を呼び出してからコードを実行します。
私のデータベースの一部のデータでは、親と子の間にcircular dependency
があります。これにより、2つのメソッドが互いに呼び出しを続けてinfinite loop
になります。
どうすればこの問題を解決できますか?私の計画は、counter
を追加して、infinite
ループが発生していることを検出してから、その特定の親子関係のために移動します。
方法1:
private void cancelChildTree(Parent parent) {
removeChildRelationsIfNecessary(parent);
//Note that the 2 methods below never get called if the infinite loop occurs
otherMethod();
anotherMethod();
}
方法2:
private void removeChildRelationsIfNecessary(Parent parent) {
List<Child> childList = parent.getParentChildRelationship());
for (Child child: childList {
cancelChildTree(child);
}
}
私は自分のコードを更新しました。申し訳ありませんが、古いバージョンです。間違ったものをコピーして貼り付けました。 – java123999
私の主張は、**同じ**オブジェクトでそのメソッドを常に呼び出すことでした。そして、私があなたの編集を見ると、それはまだそうであるようです。だから私はここであなたのコメントであなたが何を言おうとしているのか分からない。 – GhostCat