在java程序中创建实例的时间?
我想为java编写单例类。 我发现了一个示例程序,如下所示在java程序中创建实例的时间?,java,singleton,instance,Java,Singleton,Instance,我想为java编写单例类。 我发现了一个示例程序,如下所示 public class Singleton { private static Singleton singleton = new Singleton(); private Singleton() { System.out.println("instance is created."); } public static Singleton getInstance() { return singleto
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("instance is created.");
}
public static Singleton getInstance() {
return singleton;
}
}
你们知道,构造函数是私有方法,不是被调用的
如何创建单例实例
在java程序中创建实例的时间
谢谢。第一次调用singleton.getInstance()时,将创建singleton实例。将加载该类,初始化singleton变量,并通过getInstance()方法返回。将在您第一次调用singleton.getInstance()时创建singleton实例。将加载该类,初始化singleton变量,并通过getInstance()方法返回。正如Joshua Bloch在他的书中所说,从Java 5开始,实现singleton的最佳方法是使用enum:
public enum Singleton {
INSTANCE;
// all the necessary methods go here
}
这种单例实现模式有助于避免某些序列化/反序列化问题。有关更多详细信息,请参见有效Java第二版的第3项。正如Joshua Bloch在其书中所说,从Java 5开始,实现单例的最佳方法是使用enum:
public enum Singleton {
INSTANCE;
// all the necessary methods go here
}
这种单例实现模式有助于避免某些序列化/反序列化问题。有关更多详细信息,请参见有效Java第二版的第3项。
Singleton Singleton=Singleton.getInstance()代码>?问题出在哪里。看起来还可以。程序正在运行。问题是我不知道创建实例的时间。谢谢。Singleton Singleton=Singleton.getInstance()代码>?问题出在哪里。看起来还可以。程序正在运行。问题是我不知道创建实例的时间。谢谢。该方法甚至不需要调用,加载类就足够了。访问对象是另一回事。你是对的,但除非使用反射,否则在不调用getInstance或它可能公开的任何其他静态方法的情况下,将无法加载该类。@X.L.Antclass c=Singleton.class
将加载该类。非常感谢。因此,我可以在不调用构造函数的情况下创建实例。@assylias:您的节将加载该类,但不会初始化它。因此,将不存在单例
。试试看!甚至不必调用该方法,加载类就足够了。访问对象是另一回事。你是对的,但除非使用反射,否则在不调用getInstance或它可能公开的任何其他静态方法的情况下,将无法加载该类。@X.L.Antclass c=Singleton.class
将加载该类。非常感谢。因此,我可以在不调用构造函数的情况下创建实例。@assylias:您的节将加载该类,但不会初始化它。因此,将不存在单例
。试试看!