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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© darkpiece 中级黑马   /  2014-1-23 21:15  /  1339 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

class Single
{
        private static final  Single S = new Single();
        Single(){}

        public static Single getInstance()
        {
                s = new Single();
                return s;
        }
}

class Single2
{
        private static  Single2 s = null;
        private Single2(){}
        public static Single2 getInstance()
        {
                if(s ==null)
                        s = new Single2();
                return s ;
        }
}
第一个代码是不是说final修饰了一个s对象,不能再在方法中定义s对象了。。
再帮忙解释下第二个代码。谢谢了

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

4 个回复

倒序浏览
{:soso__16952254467664163835_3:}

表示还没学到。。。无能为力。。。

捧个人场~~
回复 使用道具 举报
1,创建私有并静态的本类对象;2,私有化构造函数;  3,定义公有并静态的方法,返回该对象。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
同学,你确定你第一个程序没有写错?第一个是“饿汉式”,在getInstance()方法中是没有s = new Single();这一句的。其实不用finally修饰,也是可以的。
这是“饿汉式”和“懒汉式”的两个小程序。饿汉式,先初始化对象,Single类一进内存,就已经创建好了对象。“懒汉式”,Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象,对象是方法被调用时才初始化的,也叫对象的延时加载,所以,在多线程的时候容易出问题,一般都会在getInstance()方法中在初始化对象时加上一个锁,以确保安全。“饿汉式”和“懒汉式”在面试时,有时可能会问到,不管理不理解,先背下来再说。

评分

参与人数 1技术分 +1 收起 理由
ily521125 + 1

查看全部评分

回复 使用道具 举报
skyname 发表于 2014-1-23 22:50
同学,你确定你第一个程序没有写错?第一个是“饿汉式”,在getInstance()方法中是没有s = new Single();这 ...

代码应该没问题,我直接粘贴过来的,是复习的时候看到这两段代码,一下懵了。。
你一说我就知道了,谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马