在一些Java類中,我看到IO資源被聲明爲實例變量,並且正在多個方法中使用。我如何關閉它們?很少建議finalize()和他們也說不推薦。我可否知道這是否有更好的方法? 例如:什麼是推薦的方式關閉IO資源作爲實例變量聲明
public class test{
private PrintWriter writer=null;
public test(){
createWriter();
}
public void log(){
writer.write("test");
writer.flush();
}
public void createWriter(){
writer=new PrintWriter(new BufferedWriter(new FileWriter("file")));
}
}
我只是做像所有包裝其他Streams和Writers的標準Streams和Writer一樣:使類實現爲Closeable,並因此具有close()方法,該方法可以通過try-with-resources語句自動調用。當然,這是文件。 –
謝謝!這個問題來自於一個具有大代碼基礎的現有項目。我是否需要在創建對象的任何地方更改(添加try-with),或者有任何其他方式可以通過它關閉它,而無需在此之外進行任何更改類。 – Saikiran
您不必強制使用try-with-resources語句。另一種方法是在finally塊中關閉。但是沒有任何事情可以在不改變代碼的情況下使代碼調用close()變得很神奇。 –