The HIRO Says

If you smell what The HIRO is cooking!!!

面白いSingletonの実装方法

Effective Javaに、EnumでSingletonを実現する方法が載ってました。(1st editionにはおそらく載っていないと思います。)
やり方が面白かったので載せます。

Singletonクラス

public enum Singleton {
    SINGLETON;

    public void doSomething() {
        // omitted
    }
}

使い方

Singleton singleton = Singleton.SINGLETON;
singleton.doSomething();

感想

変数をstatic finalにしたり、コンストラクタをprivateにしたり、getInstance()メソッドを用意したり…ということをせずに、非常に簡単にコードを書くことができます。
簡単な上に、これまでのSingletonパターンにありがちだったinstance化の競合やserializeの問題をEnum化で克服できるという点も見逃せないです。

ただ、S2全盛でS2ContainerにSingleton管理を任せてしまっている現状では、どれだけ使う機会があるのか?
…機会があったら、是非この方法を採用してみたいです。