【发布时间】:2014-03-24 17:35:20
【问题描述】:
比如……
incomingTemplate = factory.newTemplates(new StreamSource(Utils.getResource(...
StreamSource 对象是未引用的(有没有更好的说法?)因此不能调用它的 close 方法来确保它的资源被清除。
这些对象与普通的局部变量有什么不同吗?这是否受对象引用(incomingTemplate)是否为静态的影响?
【问题讨论】:
比如……
incomingTemplate = factory.newTemplates(new StreamSource(Utils.getResource(...
StreamSource 对象是未引用的(有没有更好的说法?)因此不能调用它的 close 方法来确保它的资源被清除。
这些对象与普通的局部变量有什么不同吗?这是否受对象引用(incomingTemplate)是否为静态的影响?
【问题讨论】:
这段代码
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();
【讨论】: