我知道有很多关于Singleton模式的问题。 但在这里我想知道它的输出也可能讨论如何“静态”在Java中的作品。
public class Singleton {
private static Singleton currentSingleton = new Singleton();
public static Singleton getSingleton() {
return currentSingleton;
}
private Singleton() {
System.out.println("Singleton private constructor...");
}
public static void main(String[] args) {
System.out.println("Main method...");
}
}
这是从运行代码的输出...
辛格尔顿私有构造...
主要方法...
当我调试的代码,控制首先去行System.out.println("Singleton private constructor...")
并打印。 (私有静态变量currentSingleton仍是空在这一点上)
然后转到行
private static Singleton currentSingleton = new Singleton();
然后初始化私有变量。 然后,在最后,它进入main()方法和印刷品。
我的问题是:
- 为什么它首先打印“辛格尔顿私有构造......”这是私人的构造函数。 我想控制就应该先去看main()方法,因为它是入口点。 另外,我没有在任何地方创建任何实例(除变量初始化)。
- 后来它进入静态变量实例线(currentSingleton = NULL在这一点上)
private static Singleton currentSingleton = new Singleton();
虽然currentSingleton这里得到一个值,为什么构造函数不会再次叫什么名字?
主要是我想知道这个程序的控制流。