java - 在java的构造函数中创建的未分配对象的生命周期是多少?

标签 java object constructor object-lifetime

我有一个类 (A),其构造函数定义如下所示。在构造函数中,我通过将监听器(接口(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 字段的监听器。

最佳答案

@Thomas 的评论很好。

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

关于java - 在java的构造函数中创建的未分配对象的生命周期是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55159465/

相关文章:

java - 在双引号内转义双引号

java - HashMultimap的数据处理

java - 创建不可变对象(immutable对象),在没有 new 的情况下实例化

java - conwert 对象,其中包含 utf-8 的字符串到具有正确编码的字符串

javascript - 使用 jquery grep 过滤对象数组,但条件是一个变量

c++ - 使用构造函数将双链表中的指针初始化为 NULL

java - 在 Android 中转为横向或纵向时媒体播放器会重新加载

c++ - C++中构造函数的返回类型

javascript - 为什么我的类的构造函数中调用的方法没有按预期工作?

java - 使用 hiverunner 进行单元测试中的 MissingTableException