나는 혼자서 모든 것을 배우려는 프로그래밍에 아주 익숙하다. 나는 해결할 수없는 문제에 직면하고 있으며 온라인에서 좋은 답변을 찾을 수 없습니다.Java 객체에 대한 순환 참조를 제거하는 방법은 무엇입니까?
인터페이스를 구현하는 일련의 클래스가 있는데 그 중 하나는 다른 유형의 객체에 대한 참조를 제공해야합니다. 아래 코드를 단순화 된 버전으로 게시합니다. 정확하지 않을 수도 있지만 이해할 수 있기를 바랍니다.
내가 게시 한 주 방법과 같은 순환 참조를 제거하는 메서드를 작성할 수 없다는 것이 내 문제입니다. 나는 그래프와 재귀 알고리즘에 대해 많은 것을 읽었지만, 아직 답을 찾을 수 없었다. 어떤 도움을 주시면 감사하겠습니다. 고맙습니다!
public class ReferenceObject implements A {
A reference;
public void setReference(A reference){
this.reference=reference;
}
public Object getValue(){
return reference.getValue;
}
}
public static void main(String[] args) {
ReferenceObject r1 = new ReferenceObject();
ReferenceObject r2 = new ReferenceObject();
ReferenceObject r3 = new ReferenceObject();
r1.setReference(r2);
r2.setReference(r3);
r3.setReference(r1);
}
순환 참조를 제거 할 필요는 없습니다. r1 - r3이 범위를 벗어나면 가비지 수집됩니다. – markspace
나는 당신의 필요를 이해하지 못합니다. 무엇을 구현하려고합니까? – davidxxx
[그래프의주기 감지] (http://stackoverflow.com/questions/261573/best-algorithm-for-detecting-cycles-in-a-directed-graph)에 대해 이야기하고 있습니까? – azurefrog