渴望实现Singleton的实例化

use*_*439 4 java singleton

我有一个单身人士

public class Singleton
{
     private static Singleton instance = new Singleton();

     private Singleton()
     {
         System.out.println("Instance created.");
     }

     public static Singleton getInstance()
     {
         return instance;
     }
}
Run Code Online (Sandbox Code Playgroud)

我可以运行此代码,但除非getInstance()被调用,否则不会创建实例.这很奇怪,因为我println()在构造函数中应该执行,因为我正在使用急切的实例化.

谁能解释一下?

Jig*_*shi 5

如果您希望初始化而不调用getInstance()可以调用的方法,则在第一次加载类之前,将不会创建实例

Class.forName(Singleton.class.getName());
Run Code Online (Sandbox Code Playgroud)

在初始化

你有实例作为静态字段,静态字段在类加载事件上初始化,所以如果你想要初始化,你只需要急切地加载类