Java7 から AutoCloseable が仕様に追加されました。.net framework の、IDisposable に相当し、終了処理の記述や呼び出しをスマートに行うことができるようになります。
スポンサーリンク
[ VB.NET / C# ] IDIsposable の使用例
IDisposable を実装したクラスを、using 句とともに呼び出すことにより、呼び出し側で終了処理を呼ばなくても、.net framework が自動的に終了処理を呼び出してくれるようになります。
※ 上記リンクで使用例を確認することができます。
[ Java ] AutoCloseable
.net framewrok では using 句で終了処理の自動呼出しを行っていますが、Java では try がその役目を担います。次のように AutoCloseable インターフェースの close メソッドを実装することで、自動的に呼び出されるようにすることができるようになります。
AutoCloseable インターフェースの close メソッドを実装
class Doragonball implements AutoCloseable { private int open = false; // 何かをオープンする public void open() { open = true; } // 自動的に呼び出される close メソッドを実装する @Override public void close() throws IOException { /* * 終了処理を行う。 * 多くはファイルを閉じるだとか、ネットワーク切断だとかだと思う */ open = false; } }
自動的に呼び出されるようにする
次は、上記で作成したドラゴンボールクラスを使って、close メソッドが自動的に呼び出されるようにするサンプルコードです。C# での using が Java では try に相当します。
try (Doragonball db = new Doragonball ()) { db.open(); // [ポイント!!] // クローズ処理は try ブロックから抜けると自動的に呼び出される }
息抜きにでもどうぞ。