黑马程序员技术交流社区
标题:
单例设计
[打印本页]
作者:
沈浩
时间:
2013-4-13 03:51
标题:
单例设计
本帖最后由 沈浩 于 2013-4-14 02:28 编辑
class Lazy
{
private static Lazy l= null;
private Lazy(){}
public static Lazy getLazy()
{
if(l==null)
{
if(l==null)
{
l = new Lazy();//为什么把这句加个Lazy结果就是null呢?(就是这句Lazy l = new Lazy();)
}
}
return l;
}
}
作者:
Friendy89
时间:
2013-4-13 06:05
本帖最后由 Friendy89 于 2013-4-13 06:06 编辑
这个是单例设计模式中懒汉式的书写格式,如果你Lazy l = new Lazy();就相当于又新建了一个Lazzy对象,由于你在函数开始将Lazzy l 初始化为null了,所以返回 l 时输出为null
作者:
lipingan0520
时间:
2013-4-13 10:34
class Lazy
{
private static Lazy l= null;
private Lazy(){}
public static Lazy getLazy()
{
if(l == null)
{
synchronized(Lazy.class) //在多线程的情况,加上这句更严谨哦。
{
if(l == null)
{
l = new Lazy();//为什么把这句加个Lazy结果就是null呢?(就是这句Lazy l = new Lazy();)
}
}
}
return l;
}
}
复制代码
作者:
、__WSD吴少东
时间:
2013-4-13 21:40
l = new Lazy(); l 是全局变量,
Lazy l = new Lazy(); --> Lazy l ; l = new Lazy(); 使用的时局部变量, return 返回的是全局变量的 l ,我是这样理解的,
class Lazy
{
private static Lazy l= null;
private Lazy(){}
public static Lazy getLazy()
{
if(l==null)
{
if(l==null)
{
Lazy a = new Lazy();//为什么把这句加个Lazy结果就是null呢?(就是这句Lazy l = new Lazy();)
}
}
return a;
}
}
class Demo1
{
public static void main(String[] args)
{
System.out.println(Lazy.getLazy());
}
}
复制代码
因为把这个换成a, 编译报错是找不到符号。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2