非引用对象的生命周期作为参数

时间:2014-03-24 17:35:20

标签: java object lifecycle

例如......

incomingTemplate = factory.newTemplates(new StreamSource(Utils.getResource(...

StreamSource对象是未引用的(有更好的术语吗?)因此无法调用它的近似方法来确保它的资源被清除。

这些对象与普通局部变量有什么不同?这是否受对象引用(incomingTemplate)是否为静态影响?

1 个答案:

答案 0 :(得分:0)

此代码

StreamSource ss = new StreamSource(Utils.getResource());
incomingTemplate = factory.newTemplates(ss);

等于

incomingTemplate = factory.newTemplates(new StreamSource(Utils.getResource()));

唯一的区别是,如果您使用第二种变体,则无法再直接访问StreamSource。


但是如果incomingTemplate有getStreamSource方法,那么它真的没关系,如果你使用它:

StreamSource ss = new StreamSource(Utils.getResource());
incomingTemplate = factory.newTemplates(ss);

或者这个:

incomingTemplate = factory.newTemplates(new StreamSource(Utils.getResource()));
StreamSource ss = incomingTemplate.getStreamSource();