实例化并使用枚举单例



假设您有一个枚举单例:

public enum Elvis {
    INSTANCE;
    private int age;
    private Elvis() { age = 42; }
    public int getAge() { return age; }
    public void leaveTheBuilding() { System.out.println("I'm outta here."); }
}

问:那你怎么用呢?是这样的吗:

int a = Elvis.INSTANCE.getAge();
Elvis.INSTANCE.leaveTheBuilding();
// and so on, using Elvis.INSTANCE

还是最好"显式"实例化它,然后使用该实例,比如

Elvis elvis = Elvis.INSTANCE;
int a = elvis.getAge();
elvis.leaveTheBuilding();
// and so on, using elvis

我很想使用后者来避免到处都有难看的.INSTANCE表示法。但是这样做有缺点吗?(除了要实例化的额外一行代码之外。)

这没关系。一个使用局部变量,另一个不使用。使用你觉得最可读的内容。

在我看来,在这种情况下,您可以更好地使用静态类:

public class Elvis {
  private static int age = 42;
  private Elvis() {}
  public static int getAge() { return age; }
  public static void leaveTheBuilding() {
    System.out.println("I'm outta here.");
  }
}

然后做:

int a = Elvis.getAge();
Elvis.leaveTheBuilding();
// etc.

最新更新