java吧 关注:1,231,492贴子:12,695,044
  • 2回复贴,共1

请教单例模式中的一个问题

只看楼主收藏回复

视频教学中的单例模式,请教一下,为什么执行后,先打印出来“构造方法调用了”,然后才是"get方法调用了"。
public class SingletonTest {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
}
}
class Singleton
{
private static Singleton singleton = new Singleton();
private Singleton()
{
System.out.println("构造方法调用了");
}
public static Singleton getInstance()
{
System.out.println("get方法调用了");
return singleton;
}
}


IP属地:江苏1楼2016-06-17 00:14回复
    创建对象的同时,会调用构造函数!就是说,new 出来对象的时候,也执行完了singleton()函数!静态函数按顺序调用


    IP属地:福建来自iPhone客户端2楼2016-06-17 00:39
    回复
      因为变量被静态修饰了。静态会在class加载的时候就加载进来。你的代码看似是自己调用get方法之后才调用创建对象,其实是Singleton这个class加载的时候就会执行这句代码private static Singleton singleton = new Singleton();。


      IP属地:中国香港3楼2016-06-17 00:55
      回复