Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java程序中创建实例的时间?_Java_Singleton_Instance - Fatal编程技术网

在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

我想为java编写单例类。 我发现了一个示例程序,如下所示

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.Ant
class c=Singleton.class
将加载该类。非常感谢。因此,我可以在不调用构造函数的情况下创建实例。@assylias:您的节将加载该类,但不会初始化它。因此,将不存在
单例
。试试看!甚至不必调用该方法,加载类就足够了。访问对象是另一回事。你是对的,但除非使用反射,否则在不调用getInstance或它可能公开的任何其他静态方法的情况下,将无法加载该类。@X.L.Ant
class c=Singleton.class
将加载该类。非常感谢。因此,我可以在不调用构造函数的情况下创建实例。@assylias:您的节将加载该类,但不会初始化它。因此,将不存在
单例
。试试看!