JavaのクラスをイミュータブルにするツールIMMUTATOR
の論文.
オブジェクト指向言語において,オブジェクトのイミュータビリティ(不変性)は重要である. オブジェクトがイミュータブルだとデバッグが楽になったり,分散処理がしやすくなったりと利点が多い. そこで著者らは,既存のミュータブルクラスをイミュータブルクラスに変換するアルゴリズムを提案し,ツールを実装した.
提案手法は,簡単にいうと,状態を変えるメソッドを,(状態が替わった後の)新しいオブジェクトを返すメソッドに変換する.
その他,フィールドをfinal
にしたり,コンストラクタを生成したりする.
提案手法では,4つの前提条件を満たすクラスをイミュータブルに変換する.
clone
メソッドを実装している.あるいは実装できる.