[ Java ] AutoCloseable は .net framework の IDisposable に相当する

Pocket

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 ブロックから抜けると自動的に呼び出される
}

 

息抜きにでもどうぞ。

スポンサーリンク

Pocket

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>