How to resolve the error : "MyClass.INSTANCE" is not a statement when I try to instantiate a singleton class in Java?
How to resolve the error : "MyClass.INSTANCE" is not a statement when I try to instantiate a singleton class in Java?
我有一个 Java 单例 class 作为 :
public enum MyClass{
INSTANCE;
private MyClass(){
init();
}
private static void init(){
System.out.println("Singleton Class initiated");
}
}
当我尝试通过 :
实例化 class 时
MyClass.INSTANCE;
我得到一个错误,它不是一个声明。
然而,以下工作,这对于生产代码来说并不理想:
System.out.println(MyClass.INSTANCE);
有没有办法正确启动枚举单例 class,而不调用 class 的任何其他虚拟 API?
只需说明 class(或您的情况下的枚举)不是有效的 Java 语句。
您可以按照@Lorelorelore 的建议创建一个对象
MyClass instance = MyClass.INSTANCE;
或者如果你想调用 init()
可以更改它的签名
public void init(){
System.out.println("Singleton Class initiated");
}
并直接调用方法:
MyClass.INSTANCE.init();
正如我在评论中所说:只需以这种方式声明即可:
MyClass instance = MyClass.INSTANCE;
我有一个 Java 单例 class 作为 :
public enum MyClass{
INSTANCE;
private MyClass(){
init();
}
private static void init(){
System.out.println("Singleton Class initiated");
}
}
当我尝试通过 :
实例化 class 时MyClass.INSTANCE;
我得到一个错误,它不是一个声明。
然而,以下工作,这对于生产代码来说并不理想:
System.out.println(MyClass.INSTANCE);
有没有办法正确启动枚举单例 class,而不调用 class 的任何其他虚拟 API?
只需说明 class(或您的情况下的枚举)不是有效的 Java 语句。
您可以按照@Lorelorelore 的建议创建一个对象
MyClass instance = MyClass.INSTANCE;
或者如果你想调用 init()
可以更改它的签名
public void init(){
System.out.println("Singleton Class initiated");
}
并直接调用方法:
MyClass.INSTANCE.init();
正如我在评论中所说:只需以这种方式声明即可:
MyClass instance = MyClass.INSTANCE;