不它不是。您没有声明
myClass
private staticfinal,也不
getInstance()是
static。该代码也不会真正编译。
这是单例成语:
public class MyClass { private static final MyClass myClass = new MyClass(); private MyClass() {} public static MyClass getInstance() { return myClass; }}应该为
private,以便其他任何人都不能直接访问它。应该
static只有一个。应该
final这样,以便不能重新分配它。您还需要在声明期间
直接 实例化它,这样就不必担心线程那么多。
如果加载成本很高,因此您宁愿延迟加载Singleton,则考虑Singleton
Holder习惯用法,它按需进行初始化,而不是在类加载期间进行初始化:
public class MyClass { private MyClass() {} private static class LazyHolder { private static final MyClass myClass = new MyClass(); } public static MyClass getInstance() { return LazyHolder.myClass; }}但是,您应该提出一个大问号,是否需要一个 Singleton 。通常不需要。 仅 静态变量,枚举,工厂类和/或依赖项注入通常是更好的选择。



