的渴望实例我有一个Singleton辛格尔顿
public class Singleton
{
private static Singleton instance = new Singleton();
private Singleton()
{
System.out.println("Instance created.");
}
public static Singleton getInstance()
{
return instance;
}
}
我可以运行此代码,但没有被创建的实例,除非getInstance()
被调用。这很奇怪,因为我使用急切实例化,所以构造函数中的println()
应该执行。
有人可以解释一下吗?
那么,你需要一种方法来首先执行该构造函数。这是与'getInstance' –
该类不会被初始化,直到“第一(嘟嘟)参考”。简单地加载类不会初始化它,但是(除其他之外)调用类的静态方法。 –
这个规定很清楚是什么原因导致类的初始化:http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.5 –