2016-08-14 47 views
0

使用後沒有分配給變量的PrintWriter會關閉嗎?

new PrintWriter(ExampleStream).print("Just Something"); 

一樣

PrintWriter pw = new PrintWriter(ExampleStream); 
pw.print("Just Something"); 
pw.close(); 

於是將PrintWriter的接近?

+0

爲什麼你認爲它會呢? – Tunaki

+0

可能是因爲AutoCloseable?我不太確定這個接口是幹什麼的。 – nickkoro

+2

該接口對try-with-resources語句很有用。看到這裏https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html – Tunaki

回答

1

從技術上講,Java中的匿名一詞指的是創建一個沒有名稱的本地類。你所做的只是創建一個類的實例,而不將它分配給一個變量。

1

不,他們都是不一樣的情況下

在你的第二個例子,問題PrintWritter將得到立即關閉的那一刻pw.close()將得到執行。而

在您的問題的第一個例子中,printwriter不會立即關閉。在調用 - >新的PrintWriter(ExampleStream).print() 之後,因爲您沒有任何對其對象的引用,因此您不能再次使用同一個對象,這意味着它有資格被垃圾收集器刪除。因爲我們不能說什麼時候垃圾回收器會運行,這就是爲什麼當這個對象被刪除時沒有把握。要記住的另一個重要的事情是,儘管這個對象可能被垃圾收集器清除,但是這個過程與pw.close()不一樣(

相關問題