Java范围:返回在方法内部实例化的对象-危险吗?

扎克:

我是Java班的学生,今天学到了一些有关Java的知识,这使我的工作陷入困境。当我问老师如何以及为什么时,他不确定行为。谁能解释以下示例为何起作用?

class Example {
    public int ex_val;

    public Example (int a) {
        this.ex_val = a;
    }

    public int getExVal () {
        return this.ex_val;
    }
}

如果要在另一个类的方法中创建“示例”的实例并“返回”该对象,则它可以成功跳出其原始范围并随后使用。

class ParentObject {
    // Instance Variables    
    public Example a;

    public ParentObject (int number) {
        // Initialize instance variable object from out-of-scope instantiation
        this.a = genExample(number);

        // Verify scope creep
        System.out.println(this.a.getExVal());
    }

    public Example genExample (int a) {
        return new Example(a);
    }
}

这确实有效,但是这种行为稳定吗?我可以指望吗?垃圾回收器能否在一种方法的返回语句与调用函数的赋值语句之间跳转?我是否基于操作系统的JVM版本冒着失败的风险?如果可以依靠的话,这似乎是方便的功能。

路易斯·瓦瑟曼:

这是在Java中完全正常,常见且可靠的事情,要做的事情是相信垃圾收集器会在没有任何活动引用时立即清理该对象。这不依赖于操作系统也不依赖于JVM:任何JVM都可以。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章