A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yi651312197 中级黑马   /  2016-1-5 10:26  /  1318 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. Class Single{
  2.         private Single(){}
  3.         private static Single s = null;
  4.         public static Single getInstance(){
  5.                         if(s==null)
  6.                                 s = new Single();
  7.                         return s;
  8.         }
  9. }
复制代码
懒汉式,不是延迟加载么?
static 修饰的getInstance方法,随着类的加载就已经加载了啊?  这个怎么理解

10 个回复

倒序浏览
膜拜大神
回复 使用道具 举报
延迟加载是指先判断s是否为空,是空的话就创建对象,不是空的话就直接返回对象。这是相对于饿汉式而言的,饿汉式是类一加载就创建对象,因为对象是在类中创建的。而饿汉式类加载后还需要判断一下,如果对象不存在才创建。
回复 使用道具 举报
黑色皮肤的马 发表于 2016-1-5 21:29
延迟加载是指先判断s是否为空,是空的话就创建对象,不是空的话就直接返回对象。这是相对于饿汉式而言的, ...

static默认就加载了啊,那是不是饿汉式也一启动虚拟机就创建了啊
回复 使用道具 举报
这个问题问的好,膜拜!哪位大神来解答???
回复 使用道具 举报
李永佳 发表于 2016-1-6 11:59
这个问题问的好,膜拜!哪位大神来解答???

哈哈,确实不怎么理解
回复 使用道具 举报
yi651312197 发表于 2016-1-6 08:43
static默认就加载了啊,那是不是饿汉式也一启动虚拟机就创建了啊

我的理解是,类加载了,但是还没创建对象。
回复 使用道具 举报
什么时候用,什么时候创建。
回复 使用道具 举报
只是加载了方法,没有对象去调用这个方法,所以这个方法没有运行,
只有用类名. 第一次去调用方法的时候才会创建对象,第二次和第二次以后的调用都返回的是第一次调用时创建的对象
回复 使用道具 举报
单例模式, 私有构造方法, 无法实例化, 但是要对外提供公共的访问方式, 所以才需要用类名. 调用, 你不静态怎么类名. 调用呢
回复 使用道具 举报
空与夏虫语冰 发表于 2016-1-7 00:14
只是加载了方法,没有对象去调用这个方法,所以这个方法没有运行,
只有用类名. 第一次去调用方法的时候才会创 ...

有点懂了  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马