ファイナル・アンサー?
メモ:
- 様々な final
- Java でクラスとメソッドはむやみに final にしないほうがよい
- パフォーマンス上の利点はない
- final にする場合は文書化を忘れずに
- Java でフィールドは積極的に final にする
- パフォーマンス上の利点がある
- 変更不可オブジェクトが作れる
- コンストラクタ内での final フィールドの初期化が難しい場合がある
- final に格納したいオブジェクトの生成で例外が発生した場合
- この場合は※1のようなコードにする
- Java の final は参照先オブジェクトに対する変更は可能
※1
public class Foo { private final Thingie thingie; public Foo() { Thingie tempThingie; try { tempThingie = new Thingie(); } catch (ThingieConstructionException e) { tempThingie = Thingie.getDefaultThingie(); } thingie = tempThingie; } }
感想
基本的には継承を禁止するべきという Effective Java の項目17と矛盾してない?と思った。
ケースバイケースってことかな。