写到这个地方,是不是能看出点眉目了,呵呵,上边代码是不是会抛出:java.lang.NullPointerException异常,为什么呢,很简单,我们知道
类的加载过程是什么: 装载----验证 ---准备---解析---初始化。初始化之前,类加载器会把所有变量都默认为对应类型的默认值。复合类型变量是不是为null,而在初始的时候,上边的第一条语句就new了本身,在进入构造器函数的时候,是不是就产生了错误。 第二种创建方式的优缺点: 优点:避免了第一种方式可能产生的错误。 缺点:不利于用在多线程上,因为他使用了锁,这样在资源上有很大浪费。 后来有人提出了双检查单例模式,参考资料在:http://www.ibm.com/developerworks/java/library/j-dcl.html?dwzone=java 第三种创建方式的优缺点:(Bob lee创建的) 优点: 综合了上诉两种方法的优点,故,我比较推荐使用这种方式;
posted on 2007-12-21 15:03 sam.chuan.yang 阅读(1746) 评论(2) 编辑 收藏 所属分类: 23设计模式的理解