【发布时间】:2016-07-08 08:46:08
【问题描述】:
使用以下代码:
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 中是否可以使用某种形式的弱链表?
有什么不同的方法吗?
注意:我只寻找共享Outer 特定实例的Inners。
【问题讨论】:
-
很确定你需要列出它们
-
一个非常糟糕的实现是通过向外部类添加一个全局布尔变量并为每个内部类设置一个线程来检查布尔值是否已更改。您可以改为为这些类中的每一个添加一个侦听器,并从外部类调用该侦听器。
-
@nickzoum 我承认这一点,但你说“我只是想找到一种方法来向所有类发出信号,而实际上不必为每个实例保存记录。” - 我想指出不适合听众的方法。但是,由于该讨论无助于回答 OP 的问题(它部分是基于我这边的误解),我将删除我的其他 cmets 以免使问题混乱(我也会尽快删除它,在你有机会阅读它之后;))。
标签: java android inner-classes weak-references