gpt4 book ai didi

Java对象持久化问题

转载 作者:行者123 更新时间:2023-12-02 08:34:23 25 4
gpt4 key购买 nike

我有一个名为 BOM 的对象类。它有一个方法 getChildItem(),它返回一个 Item 对象。

假设我这样做:

 BOM model = new BOM();
Item child = model.getChildItem();
ArrayList a = new ArrayList();

a.add(child);
model.close();

会发生什么?是吗:

  • 实际上并未关闭模型,因为节点位于数组中
  • 仍然关闭模型,因为子对象一旦创建,就独立于模型对象。
  • 关闭模型并将子对象设置为 null(我很确定这不会发生;它会造成严重破坏,并且似乎与 Java 垃圾收集方法违反直觉)

最佳答案

不可能说出你的 close() 方法的作用。您可能正在考虑类似数据库结果集或输入流之类的东西,其中值在关闭后不可用?除非您以这种方式显式构建对象,否则情况不会如此,它们不是核心语言的一部分。

从上下文来看,我认为您的意思是“当父对象超出范围时会发生什么?” (即有资格进行垃圾收集)

发生的事情是这样的:

BOM model = new BOM();
Item child = model.getChildItem();
// you now have a handle to the child object. Presumably, so does model, but we don't care about that.
ArrayList a = new ArrayList();
a.add(child);
//a now has a handle to child.
model.close();
// child is not eligible for garbage collection because a still has a handle to it.

关于Java对象持久化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2372673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com