|
纠正!
最初由 long_biti 发布
[B]两个例子都没有错,一般情况下应该是先走静态变量初始化再走构造函数,但是第一个例子中private static Singleton obj = new Singleton();在初始化obj的时候已经去调用私有的构造函数private Singleton(){..}并获得了一个实例,,然后再初始化其他的静态变量。这是单例模式的特点。而第二个例子中每调用一次new都会重新创建一个新的实例 [/B]
综述上面两个例子:
JAVA class中的初始化次序取决于变量在class中的定义次序,变量的定义可能散落各处,但变量一定会在任何一个函数(包括构造函数)被调用之前完成初始化。〕
大家再有什么疑问可以参考Think in java中关于类成员初始化顺序的描述。 |
|