饿汉式
class Single
{
private static final Single s = new Single();
private Single(){}
public static Single getInstance()
{
return s;
}
}
懒汉式(单例的延迟加载方式)
class Single2
{
private static Single2 s2 = null;
private Single2(){}
public static Single2 getInstance()
{
if(s2==null)
s2 = new Single2();
return s2;
}
}
class SingleMain
{
public static void main(String[] args)
{
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
}
}
饿汉,变种
http://www.blogjava.net/kenzhh/archive/2013/03/15/357824.html
作者代码有两处错误。
1.变量声明时没加static,java先加载静态。等到加载类的时候才去加载成员变量和方法。
2.同理return时不应该是this.instance。加载静态方法时还没加载类呢,此时还没有“当前对象”。
public class Single {
private static Single instance = null;
static {
instance = new Single();
}
private Single() {
}
public static Single getInstance() {
return instance;
}
}