Java ファイナライザとは?

クラスのメンバ関数には、特殊なモノが存在します。

コンストラクタファイナライザです。

ここではファイナライザについて説明します。
(コンストラクタについてはコチラ。)


コンストラクタは、クラスのインスタンス作成時に
自動的に呼ばれる特殊なメンバ関数でしたが、

ファイナライザは、
そのインスタンスが破棄される直前に自動的に
呼ばれる特殊なメンバ関数です。

故意に呼ぶ事もできますが、推奨しません。

ファイナライザで行う処理はほとんどありません

ファイナライザの名前は、finalizeとなります。

引数はなしで、戻り値はvoid固定です。

ファイナライザ利用例

class Ctest {

      public Ctest() {
            System.out.println("コンストラクタ呼び出し");
      }

      public void finalize() {
            System.out.println("ファイナライザ呼び出し");      
      }
}

public class Cmain {
      public static void main(String[] args) {
            Ctest obj = new Ctest();

      }
}

この例では、
クラスCtestのインスタンスを作成しただけのプログラムです。

まず、インスタンス作成時にはコンストラクタが呼ばれます。

そして、ファイナライザは、
そのインスタンスがもうプログラム上で使われない
と判断されれば、呼び出されます。

このプログラムでは、
main関数を抜けるとクラスCtestのインスタンスobjが使用できなくなるので、
その時点で呼ばれる事になります。

ファイナライザの動作を確認したい場合は、
このプログラム例を実行してみて下さい。