クラスのメンバ関数には、特殊なモノが存在します。
コンストラクタとファイナライザです。
ここではファイナライザについて説明します。
(コンストラクタについてはコチラ。)
コンストラクタは、クラスのインスタンス作成時に
自動的に呼ばれる特殊なメンバ関数でしたが、
ファイナライザは、
そのインスタンスが破棄される直前に自動的に
呼ばれる特殊なメンバ関数です。
故意に呼ぶ事もできますが、推奨しません。
ファイナライザで行う処理はほとんどありません。
ファイナライザの名前は、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が使用できなくなるので、
その時点で呼ばれる事になります。
ファイナライザの動作を確認したい場合は、
このプログラム例を実行してみて下さい。