Как вы, вероятно, знаете, конструктор для типа enum должен быть закрытым или закрытым доступом.
Он вызывается автоматически и создает константы, которые определены в начале тела enum.
Вы не можете вызвать конструктор enum самостоятельно.
Вот несколько примеров, которые могут оказаться полезными.
public enum MySingleton {
// if you have multiple constants here - it's not Singleton
INSTANCE;
// if you need to provide some info to your INSTANCE,
// you can add params to its methods
public void someMethod(String value) {
System.out.println("inside someMethod, value is " +value);
}
}
Если вам нужно, чтобы экземпляр имел какое-либо состояние, вы можете добавить поля и конструктор:
public enum MySingleton {
INSTANCE("Hello");
private String message;
MySingleton(String msg) {
this.message = msg;
}
// you can even have getter/setter for it
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Пример основного метода:
public static void main(String[] args) {
System.out.println(MySingleton.INSTANCE.getMessage()); // prints Hello
MySingleton.INSTANCE.setMessage("Bye");
System.out.println(MySingleton .INSTANCE.getMessage()); // prints Bye
}