用下面的代碼:有沒有辦法讓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;
}
}
}
我想一個方法添加到Outer
它要求每個Inner
的方法。這樣做的
一種方法是Outer
保持Inner
的List
一個實例,這getInnerInstance
追加到。問題在於我不希望列表對內部實例的引用使它們不被垃圾收集。在Java中會有某種形式的弱鏈接列表嗎?
有什麼不同的方法嗎?
注意:我只查找Inner
s,它們共享Outer
的特定實例。
很確定你需要列出它們 –
這是一個非常糟糕的實現,通過向外部類添加一個全局布爾變量併爲每個檢查布爾值是否已更改的內部類都有一個線程。您可以添加一個偵聽器到這些類中的每一個,並從外部類調用偵聽器。 –
@nickzoum我承認,但你說過「我只是想找到一種方法來發信號通知所有的類,而不必爲每個實例保存記錄。」 - 我想指出的不符合聽者的方法。然而,由於討論無助於回答OP的問題(部分原因是基於我的誤解),爲了避免混淆問題,我將刪除其他評論(我將很快刪除這些內容,在你有機會閱讀之後))。 – Thomas