在 java 的构造函数中创建的未分配对象的生命周期是多少?
What is the lifetime of unassigned object created in a constructor in java?
我有一个 class(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 的侦听器场.
@Thomas 的评论很好
OnStringUpdatedListener
修改什么并不重要。执行构造函数后,B
将无法通过任何引用访问。它将有资格进行 GC,并且可能 被垃圾收集。
我有一个 class(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 的侦听器场.
@Thomas 的评论很好
OnStringUpdatedListener
修改什么并不重要。执行构造函数后,B
将无法通过任何引用访问。它将有资格进行 GC,并且可能 被垃圾收集。