2014-03-24 66 views
0

例如...生命週期非引用的對象作爲參數

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

的StreamSource的對象是未引用(是有這個一個更好的詞?),因此不能稱這是確保close方法它的資源被清除了。

這些對象與普通局部變量有什麼不同嗎?這是否受到對象引用(incomingTemplate)是否是靜態的影響?

回答

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(); 
+0

關於生命週期雖然是StreamSource的隱含空因爲它曾經被用來創建Template對象而未被引用? – Chaffers