3

Java 5以降、シングルトンを作成する最良の方法は、単一要素の列挙型を使用することであると言われています。

例:

public enum SuperSingleton implements Zooma{
    INSTANCE;

    /**
     */
    public void fightTheBattle(){
        System.out.println("I am fighting the battle!!!");
    }

    @Override
    public void runningWild() {
        //This is method implemented from the Zooma interface.      
    }
}

Joshua Blochによると、単一要素の列挙型シングルトンは次のとおりです。

  • より簡潔
  • シリアル化機構を無料で提供します
  • 複数のインスタンス化に対する鉄壁を提供します。

それがどのように簡潔であり、複数のインスタンス化に対してどのように鉄壁を提供するかを見ることができます が、どのように無料でシリアル化機構を提供しますか?

シングルトンが列挙型になることで得られるものですか?

4

3 に答える 3

3

Yes, Enums are all extended off of the Enum class, which implements Serializable.

于 2011-04-22T20:15:21.480 に答える
1

100%確実ではありませんが、シリアル化されたシングルトンを複数逆シリアル化すると、複数のインスタンスが作成される可能性があると思います。列挙型インスタンスは常にシングルトンのままです。

したがって、シリアル化を実装するだけで得られるものよりも「より多くのシリアル化」が得られます。

于 2011-04-22T20:24:20.327 に答える
1

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Enum.html

はい :)

于 2011-04-22T20:18:52.420 に答える