1

假设我有一个用于单个 ton 类的空构造函数,以下 2 种方法中哪一种更好地从公共 getInstance 方法返回实例?

  1. 类级初始化 {

    public class ClassName{
    
    private static ClassName instance = new ClassName ();
    }
    

    }

  2. 带有双重检查锁的延迟加载

    if (null == instance) {
    
            synchronized (this) {
        if(null == instance) {
            instance = new className();
                }
        }
    }
    

我在想类级初始化不会在这里造成任何伤害。但想从专家那里确认一下。请帮忙

4

1 回答 1

1

您应该有一个私有构造函数和一个final实例字段。理想情况下,班级也应该如此final。完成这一切的最简单方法是使用枚举

public enum Singleton implements MyInterface {
    INSTANCE;
} 
于 2013-10-10T06:02:45.190 回答