此实现对单例是否正确?

时间:2019-05-17 17:19:06

标签: java singleton

我想实现一个单例类,您能告诉我:我的实现是正确的吗?如果没有,请告诉我原因。 谢谢

public class Singleton {
    private String str ;
    private final static Singleton ss = new Singleton();
    private Singleton(){

    }

    public void setStr(String str) {
        this.str = str;
    }
    public String getStr() {
        return str;
    }

    public static Singleton getInstance(){
        return ss;
    }
}

3 个答案:

答案 0 :(得分:1)

实现单例的方式如下:

public class Singleton {
  private static Singleton _instance;

  private Singleton() {
  }

  public static Singleton getInstance() {
      if (_instance == null) {
         _instance = new Singleton();
      }
      return _instance;
  }

答案 1 :(得分:1)

您的实现很好并且是线程安全的。
在静态字段中执行的单例实例为:

private final static Singleton ss = new Singleton();

防止在对象可访问之前执行任何竞争条件,并且其余代码还保证仅创建该类的一个实例,特别是因为此语句是构造函数被调用且构造函数也是私有的。

请注意,这是一个渴望的实例化。您也可以对静态的holder类使用惰性方式,但这确实很麻烦,因为开销几乎为零。

答案 2 :(得分:-2)

公共类Singleton {

ActivityType

}