JavaのクラスをイミュータブルにするツールIMMUTATORの論文.

オブジェクト指向言語において,オブジェクトのイミュータビリティ(不変性)は重要である. オブジェクトがイミュータブルだとデバッグが楽になったり,分散処理がしやすくなったりと利点が多い. そこで著者らは,既存のミュータブルクラスをイミュータブルクラスに変換するアルゴリズムを提案し,ツールを実装した.

提案手法は,簡単にいうと,状態を変えるメソッドを,(状態が替わった後の)新しいオブジェクトを返すメソッドに変換する. その他,フィールドをfinalにしたり,コンストラクタを生成したりする. 提案手法では,4つの前提条件を満たすクラスをイミュータブルに変換する.