Как устранить ошибку: «MyClass.INSTANCE» не является оператором, когда я пытаюсь создать экземпляр одноэлементного класса в Java? - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть класс Java Singleton как:

public enum MyClass{
   INSTANCE;

   private MyClass(){
     init();
   } 

   private static void init(){
     System.out.println("Singleton Class initiated");
   }
}

Когда я пытаюсь создать экземпляр класса:

MyClass.INSTANCE;

Я получаю сообщение об ошибке, что это не утверждение.

Тем не менее, следующие работы, которые не идеальны для производственного кода:

System.out.println(MyClass.INSTANCE);

Есть ли способ правильно инициировать одноэлементный класс enum без вызова какого-либо другого фиктивного API этого класса?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Как я уже сказал в своем комментарии: просто объявите это следующим образом:

MyClass instance = MyClass.INSTANCE;
0 голосов
/ 12 ноября 2018

Просто класс состояния (или enum в вашем случае) не является допустимым оператором Java.

Вы можете создать объект, как предложено @Lorelorelore

MyClass instance = MyClass.INSTANCE;

Или, если вы хотите позвонить init(), возможно, измените свою подпись

public void init(){
    System.out.println("Singleton Class initiated");
}

И вызвать метод напрямую:

MyClass.INSTANCE.init();
...