我有一个定义构造函数的类(A),如下所示。在构造函数中,我通过向B传递了一个listener(interface)实现为B创建了一个对象,如下所示。
public class A {
private String str;
public A() {
new B(new OnStringUpdatedListener() {
public void onStringUpdated(String str) {
A.this.str = str;
}
});
}
}
在上面的代码中,B的对象未分配给A的任何字段或构造函数中的变量。
B对象的生存期是什么?构造函数执行完成后立即将其标记为垃圾回收,还是因为它注册了修改A字段的侦听器而仍然有效。
>答案 0 :(得分:4)
@Thomas的评论很好。
OnStringUpdatedListener
修改什么都没有关系。执行完构造函数后,将无法通过任何引用访问B
。它将有资格获得GC且可能被垃圾收集。