在java的构造函数中创建的未分配对象的生存期是多少?
我有一个类(a),其构造函数定义如下所示。在构造函数中,我通过向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的字段的侦听器而仍然处于活动状态
# 1 楼答案
@Thomas的评论很好
不管
OnStringUpdatedListener
修改什么。构造函数执行后,B
将无法通过任何引用访问。它将符合GC的条件,并且可以进行垃圾收集