:Java Outer Class의 인스턴스가 Java Inner Class의 모든 인스턴스를 호출 할 수있는 방법이 있습니까? 다음 코드와
public class Outer {
final int foo;
public Outer(int foo) {
this.foo = foo;
}
public Inner createInnerInstance(int bar) {
return new Inner(bar);
}
public int getBarSum() {
// TODO: implement
}
public class Inner {
final int bar;
public Inner(int bar) {
this.bar = bar;
}
public int getBar() {
return bar;
}
public int getFooPlusBar() {
return foo + bar;
}
}
}
나는 모든 Inner
에 메소드를 호출 Outer
에 메서드를 추가하고 싶습니다. Outer
이 getInnerInstance
가 추가하는하는 List
Inner
의 인스턴스를 유지하는이 일을
한 가지 방법이다. 이 문제는 목록의 내부 인스턴스에 대한 참조가 가비지 수집되지 않도록하려는 것입니다. Java에서 weak-linked List의 일부 형태가 가능합니까?
다른 접근 방법이 있습니까?
참고 : Outer
의 특정 인스턴스를 공유하는 Inner
만을 찾고 있습니다.
확실히 그들을 목록화할 필요가 있는지 확인하려면 –
매우 나쁜 구현은 외부 클래스에 전역 부울 변수를 추가하고 부울이 변경되었는지 확인하는 내부 클래스 각각에 대한 스레드를 갖는 것입니다. 대신 이러한 각 클래스에 리스너를 추가하고 외부 클래스에서 리스너를 호출 할 수 있습니다. –
@nickzoum 나는 당신이 "각 인스턴스에 대해 레코드를 실제로 보유 할 필요없이 모든 클래스에 신호를 보낼 수있는 방법을 찾기 위해 노력한 것"이라고 인정합니다. - 나는 청취자 접근법에 적합하지 않다고 지적하고 싶다.그러나 그 토론이 OP의 문제에 대답하는 데 도움이되지 않기 때문에 (부분적으로는 오해가 내 측면에 근거합니다) 나는 질문을 혼란스럽게하지 않기 위해 다른 의견을 삭제할 것입니다 (나는 이것을 곧 삭제할 것입니다, 당신이 그것을 읽을 기회를 가졌던 후에)). – Thomas