Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        2年前关闭。
                                                                                            
                
        
在Java中实现单例模式的有效方法是什么?

最佳答案

使用一个枚举:

public enum Foo {
    INSTANCE;
}


Joshua Bloch在Google I / O 2008的Effective Java Reloaded演讲中解释了这种方法:link to video。另请参见他的演示文稿(effective_java_reloaded.pdf)的幻灯片30-32:


  实现可序列化单例的正确方法

public enum Elvis {
    INSTANCE;
    private final String[] favoriteSongs =
        { "Hound Dog", "Heartbreak Hotel" };
    public void printFavorites() {
        System.out.println(Arrays.toString(favoriteSongs));
    }
}



编辑:online portion of "Effective Java"说:


  “该方法在功能上等同于公共领域方法,除了它更简洁,免费提供序列化机制,甚至在面对复杂的序列化或反射攻击时也提供了针对多重实例化的明确保证。尚未被广泛采用的单元素枚举类型是实现单例的最佳方法。”

07-28 01:10
查看更多