ファイナライザを避ける
ファイナライザ
GCによって、インスタンスが回収されるタイミングで実行されるメソッド
ファイナライザは(原則)使用するべきでは無い
理由
- ファイナライザは即時実行されるわけでは無い(意図しないタイミングで実行される可能性がある)
- そもそも実行されることが保証されていない
ファイナライザ相当のことをしたい場合
- 明示的にコールする後処理メソッドを書く
- terminate, dipose, etc…
- 上記メソッドがコールされたことを管理するフィールド値をオブジェクトに持たせる
- isTerminated, isDisposed
参考: ExecutorService (Java Platform SE 6)
ファイナライザの使い所は?
上記メソッドを呼び出し忘れた時の保険
実装する場合の注意点
親クラスでファイナライザが実装されている場合、忘れずに呼び出すこと
- かなり簡略化しているので、正確完全な情報はEffective Java原本を参照してください