0
我有例如一個new Formatter(new StringWriter())
。我應該關閉格式化程序,即使它沒有保存任何非內存資源?無論如何,關閉StringWriter都不起作用。應該關閉一個不佔用資源的格式化程序?
我可以想象,如果我將實現從StringWriter更改爲其他內容,稍後忘記做。但另一方面,不必要的關閉會使代碼混亂。
我有例如一個new Formatter(new StringWriter())
。我應該關閉格式化程序,即使它沒有保存任何非內存資源?無論如何,關閉StringWriter都不起作用。應該關閉一個不佔用資源的格式化程序?
我可以想象,如果我將實現從StringWriter更改爲其他內容,稍後忘記做。但另一方面,不必要的關閉會使代碼混亂。
不,國際海事組織沒有令人信服的理由,爲什麼你在這種情況下你應該應該關閉Formatter
。
要是你,而不是寫:
Writer formatted;
formatted = new StringWriter();
Formatter formatter = new Formatter(formatted, Locale.US);
那麼可以說你應該電話:
formatter.close();
即使它不會有任何影響,因爲現在formatted
變量聲明爲的接口類型Writer
,稍後可以實現爲closable
類型,例如PrintWriter
。
「應該」意味着我不滿意的義務水平。爲什麼*不會*關閉它? 特別是因爲嘗試與資源使得這樣做微不足道。 – 2014-10-16 12:57:00
在這種特殊情況下,我無法使用Java 1.7,因此try-with-resources不可用。否則,這確實是一個乾淨的解決方案。至於爲什麼我不會,我認爲這是我的問題的一部分;是否有令人信服的理由不這樣做。一個想到的是在沒有必要的時候關閉代碼。 – jhyot 2014-10-17 16:30:01