繁体   English   中英

Java对象持久性问题

[英]Java object persistence question

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

假设我这样做:

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

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

怎么了? 可以:

  • 实际上不关闭模型,因为节点位于数组中
  • 仍然关闭模型,因为子对象一旦创建,便与模型对象无关。
  • 关闭模型,并将子对象设置为null(我很确定这不会发生;这将造成严重破坏,并且似乎与Java垃圾回收方法背道而驰)

无法说出close()方法的作用。 可能您正在考虑某种诸如数据库resultSet或inputStream之类的东西,在关闭后这些值不可用? 除非您以这种方式显式构建对象,否则它们就不是这种情况,它们不是核心语言的一部分。

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

这是怎么回事:

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.

子对象和模型都将是相同的基础对象。 close将在模型上调用,因此任何依赖于其打开状态的子项访问都将失败。

希望能有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM