在Java中如何创建单例枚举?

单例模式将类的实例化限制在一个对象上。INSTANCE 是表示枚举实例的公共静态最终字段。我们可以使用 EnumSingleton.INSTANCE 获得类的实例,但是如果我们想要更改实现,最好将其封装在 getter 中。

我们可以在Java中将枚举用作单例有几个原因

  • 保证一个实例(即使通过反射也不能实例化多个枚举)。

  • 线程安全的。

  • 序列化。

语法

public enum Singleton {

   INSTANCE;

   private singleton() {

   }

}

示例

public enum EnumSingleton {

   INSTANCE;

   private String name;

   private int age;

   private void build(SingletonBuilder builder) {

      this.name = builder.name;

      this.age = builder.age;

   }

   public static EnumSingleton getSingleton() { // static getter      

       return INSTANCE;

   }

   public void print() {

      System.out.println("Name: "+name + ", age: "+age);

   }

   public static class SingletonBuilder {

      private final String name;

      private int age;

      private SingletonBuilder() {

         name = null;

      }

      public SingletonBuilder(String name) {

         this.name = name;

      }

      public SingletonBuilder age(int age) {

         this.age = age;

         return this;

      }

      public void build() {

         EnumSingleton.INSTANCE.build(this);

      }

   }

   public static void main(String[] args) {

      new SingletonBuilder("Adithya").age(25).build();

      EnumSingleton.getSingleton().print();

   }

}

输出结果

Name: Adithya, age: 25

以上是 在Java中如何创建单例枚举? 的全部内容, 来源链接: utcz.com/z/335385.html

回到顶部