Singleton を破壊する(3)

シリアル化したい場合は

http://d.hatena.ne.jp/SiroKuro/20080403/1207237637#c1207267140

ということで、Singleton オブジェクトをシリアル化したいときには、こういう風にします。

import java.io.*;
public class Singleton implements Serializable {
    private static final Singleton instance = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() { return instance; }
    public Object readResolve() throws ObjectStreamException { return instance; }
}

Serializable くっつけて、readResolve という名前のメソッドを用意します。これで ObjectInputStream#readObject で返ってくるオブジェクトが、常に Singleton#instance になるという仕掛けです。
ということで Singleton 付けても readResolve を適切に実装すれば問題無い、という tips です。