Javaクラスの中には、インスタンス変数として宣言されたIOリソースが複数のメソッドで使用されているものがあります。彼らはそれが推奨されていないとも言います。これに対してより良いアプローチがあるかどうかは分かりますか? 例:close 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とWritersのように:クラスをCloseableに実装するようにして、try-with-resourcesステートメントで自動的に呼び出すことができるclose()メソッドがあります。もちろん、それを文書化してください。 –
ありがとうございます!この問題は、大きなコードベースを持つ既存のプロジェクトからのものです。オブジェクトが作成されているところでどこでも変更したり(try-withを追加する必要があります)、これを変更せずに閉じることができる他の方法がありますクラス。 – Saikiran
try-with-resourcesステートメントを使用する必要はありません。代わりに、finallyブロックで閉じることです。しかし、コードを変更せずにコードをclose()することは魔法のようにできます。 –