[英]Java object persistence question
我有一个称为BOM的对象类。 它有一个方法getChildItem(),它返回一个Item对象。
假设我这样做:
BOM model = new BOM();
Item child = model.getChildItem();
ArrayList a = new ArrayList();
a.add(child);
model.close();
怎么了? 可以:
无法说出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.