Java类的单个实例

gir*_*iri 3 java singleton

我想创建一个类的单个实例.如何在Java中创建一个类的单个实例?

gpa*_*ara 18

要创建类的真正单个实例(暗示JVM级别的单例),您应该使您的类成为Java enum.

public enum MyClass {
  INSTANCE;

  // Methods go here
}
Run Code Online (Sandbox Code Playgroud)

单例模式使用静态,因此在单元测试时通常会导致严重破坏.

约书亚布洛赫的Effective Java的第3项对此进行了解释.


Sha*_*ane 10

非常基本的单身人士.

public class Singleton {
  private static Singleton instance;

  static {
    instance = new Singleton();
  }

  private Singleton() { 
    // hidden constructor
  }    

  public static Singleton getInstance() {
    return instance;
  }
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用惰性持有者模式

public class Singleton {

  private Singleton() { 
    // hidden constructor
  }

  private static class Holder {
    static final Singleton INSTANCE = new Singleton();
  }

  public static Singleton getInstance() {
    return Holder.INSTANCE;
  }
}
Run Code Online (Sandbox Code Playgroud)

在访问getInstance()之前,此版本不会创建单例实例,但由于JVM /类加载器处理内部类创建的方式,因此保证只有一次调用构造函数.


Cha*_*ara 5

使用单例模式.

单身模式

更新:

什么是单身人士模式? 单例模式是一种设计模式,用于将类的实例化限制为一个对象