希望你一切顺利。 我目前正在尝试理解以下代码片段,它显然是我在代码片段中创建的 LazyHolder 类的属性单例的延迟加载示例:
class Singleton {
// My private inner class containing my future lazy loading attribute
private static class LazyHolder {
private static Singleton singleton = new Singleton();
}
public static Singleton getSingleton() {
return LazyHolder.singleton;
}
}
class Main {
public static main(String[] args) {
Singleton s = Singleton.getSingleton();
}
}
根据我一直关注的一些在线课程,将在以下行创建私有静态单例实例:
Singleton s = Singleton.getSingleton()
但我不同意。对我来说,因为私有静态属性
singleton
是static
。该属性将在 LazyHolder
类定义期间创建,因为它是静态的...
所以我的问题是:
LazyHolder
类是什么时候真正创建的?是在创建Singleton
类的时候创建的,因为LazyHolder
是Singleton
类的一个属性,还是在我们进入getSingleton()
类的Singleton
方法时创建的?
我真的很感激对运行时执行期间发生的事情的解释。