아래에 다음 2 개가 있습니다. methods
카운터를 사용하여 순환 종속성 무한 루프를 해결 하시겠습니까?
올바른 사용 예로 cancelChildTree()
을 호출하면 removeChildRelationsIfNecessary()
이 발생하고 내 코드로 이동합니다.
그러나 데이터베이스의 일부 데이터에는 부모와 자녀 사이에 circular dependency
이 있습니다. 이로 인해 두 메서드가 서로를 계속 호출하여 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 : 반복적으로 같은 객체에 cancelChildTree(Parent parent)
를 호출처럼
private void removeChildRelationsIfNecessary(Parent parent) {
List<Child> childList = parent.getParentChildRelationship());
for (Child child: childList {
cancelChildTree(child);
}
}
내 코드를 업데이트했습니다. 죄송합니다. 이전 버전이었습니다. 잘못된 코드를 복사하여 붙여 넣었습니다. – java123999
내 요점은 당신이 ** 같은 ** 객체에서 항상 그 메소드를 호출하고 있다는 것입니다. 그리고 편집을 보았을 때, 그것은 여전히 그렇게 보입니다. 따라서 나는 당신이 여기서 당신의 의견으로 말하려고하는 것을 얻지 못한다. – GhostCat