在 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,并且可能 被垃圾收集。