爲什麼在這個類(StringWriter
,PrintWriter
)方法close
沒有效果,因爲它在javadoc中提到?爲什麼StringWriter中的close方法,PrintWriter沒有效果?
我知道簡單沒有實現我想。但爲什麼?
爲什麼在這個類(StringWriter
,PrintWriter
)方法close
沒有效果,因爲它在javadoc中提到?爲什麼StringWriter中的close方法,PrintWriter沒有效果?
我知道簡單沒有實現我想。但爲什麼?
StringWriter
上的close()
方法沒有做任何事情,因爲沒有任何需要需要完成。
現在我們可以將其與其他類型的Writer
(etcetera)進行對比,這些類型需要在「關閉」時間進行操作。例如:
A BufferedWriter
需要刷新任何緩衝的輸出......以便它不會丟失。
A FileWriter
需要在打開的打開文件的本機文件句柄上執行關閉。這需要完成,因爲如果這些句柄未關閉,JVM將用完,「打開」將停止工作。
但是StringWriter
不需要做任何事情......所以它不需要。
的StringWriter::close()
方法的存在,因爲它是在其超實際執行。
該方法存在於超類中使它(更多)可用於多態上下文中。如果close()
沒有在Writer
中實現,那麼會有兩種類型的Writer
(可關閉和不可關閉),並且使用編寫器的應用程序代碼需要以不同方式處理它們。
事實上,應用程序可以關閉全部Writer
對象,知道正確的事情將會完成。在某些情況下,JIT編譯器可以優化掉StringWriter::close()
的呼叫。在其他情況下,從性能角度來看,對無操作方法的調用的開銷很少有意義。
你想對'StringWriter'有什麼影響? 'PrintWriter.close()'*具有*效果,順便說一句。 –