Основываясь на том, что было написано в вопросе SO Лучшая реализация синглтона в Java, а именно об использовании перечисления для создания синглтона - каковы различия / плюсы / минусы между (конструктор опущен)
public enum Elvis {
INSTANCE;
private int age;
public int getAge() {
return age;
}
}
а затем позвонив Elvis.INSTANCE.getAge()
а также
public enum Elvis {
INSTANCE;
private int age;
public static int getAge() {
return INSTANCE.age;
}
}
а затем позвонив Elvis.getAge()
Большое преимущество - это когда ваш синглтон должен реализовывать интерфейс. Следуя вашему примеру:
public enum Elvis implements HasAge { INSTANCE; private int age; @Override public int getAge() { return age; } }
С участием:
public interface HasAge { public int getAge(); }
Со статикой этого не сделать ...
источник
(Stateful) Синглтоны обычно используются для того, чтобы делать вид, что не используют статические переменные. Если вы на самом деле не используете общедоступную статическую переменную, вы обманете меньше людей.
источник
Я бы выбрал самый простой и понятный вариант. Это несколько субъективно, но если вы не знаете, что является наиболее ясным, выберите самый короткий вариант.
источник