有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在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) 个答案

  1. # 1 楼答案

    @Thomas的评论很好

    不管OnStringUpdatedListener修改什么。构造函数执行后,B将无法通过任何引用访问。它将符合GC的条件,并且可以进行垃圾收集